2012-04-25 3 views
2

Предположим, у меня есть словарь под названием «Job Titles». Этот словарь содержит несколько настраиваемых полей.Render custom fields of Taxonomy page D7

"JOB TITLES" (Vocabulary) 
| 
|-- name (Default Field) 
|-- description (Default Field) 
|-- reference_url (Custom Field) 
|-- help_link (Custom Field) 

Выше словаря содержит 2 пользовательских поля, которые я могу видеть при добавлении или редактировании термина таксономии.

Мой вопрос в том, как я могу использовать их на своем page.tpl? Как я могу получить к ним доступ на template.php с помощью hook_page_preprocess()?

ответ

0

К сожалению, я пока не нашел подходящего решения. Я решил временно так:

Пользовательские поля:

$output = (isset($term->field_FIELDNAME['und'][0]['safe_value']))? $term->field_FIELDNAME['und'][0]['safe_value'] : '' ; 

Срок Описание:

$output = filter_xss_admin($term->description); 

Где $ термин:

$tid = (int)arg(2); 
$term = taxonomy_term_load($tid); 

Повторяю, пользовательское поле решение выше не является лучшей практикой, а также непредсказуемым, поэтому используйте его тщательно.

0

Чтобы отобразить текст в нижней части страницы терминов, я добавил 2 новых поля в словарь таксономии ('field_term_heading' и 'field_term_footer'). Я обнаружил, что он создал довольно неудобный вложенный массив. Это то, что я добавил в page.tpl.php, чтобы отобразить его.

<?php if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))): ?> 

    <?php $page_term = taxonomy_term_load(arg(2)); 
     if ($page_term->field_footer_heading) { 
     print '<h2 class="block-title">'.($page_term->field_footer_heading['und'][0]['safe_value']).'</h2>'; 
     } 
    ?> 
    <?php $page_term = taxonomy_term_load(arg(2)); 
     if ($page_term->field_footer_text) { 
     print '<div class="content">'.($page_term->field_footer_text['und'][0]['safe_value']).'</div>'; 
     } 
    ?> 

    <?php endif; ?> 
Смежные вопросы