Задача : отобразить описание термина таксономии на страницах таксономии например. site.com/taxonomy/term/n (где n - ID термина).
Будем использовать функцию taxonomy_get_term (n), где n представляет ID термина.
В page.tpl.php добавляем следующий код перед print $content:
<?php /* Добавить описание таксономии если это страница таксономии */ ?>
<?php $page_term = taxonomy_get_term(arg(2)); // путь: site.com/taxonomy/term/n ?>
<?php if (arg(0) == 'taxonomy' && $page_term) { ?>
<div class="taxonomy-term-info">
<?php print $page_term->description; ?>
</div>
<?php } ?>
Аргументы пронумерованы от 0 (0 - taxonomy, 1 - term, 2 - n), таким образом для URL site.com/taxonomy/term/n arg (2) даст нам значение n для ID термина таксономии. Тогда функция taxonomy_get_term (arg (2)) возвратит данные термина, содержащиеся в $page_term в вышеупомянутом примере.
Мы можем просто вывести описание в page.tpl.php с <? php print $page_term->description; ?>, но мы смотрим в будущее и стараемся предусмотреть исключительные ситуации и поэтому добавили проверку переменной arg(0) на предмет ее содержимого. Если этого не сделать, могут возникнуть проблемы для таких страниц как site.com/aggregator/categories/n.
Еще к заголовку страницы, мы можем добавить класс:
<h2 <?php if (arg(0) == 'taxonomy') print ' style="taxonomy-title"'; ?>>
<?php print $title; ?>
</h2>
Заголовок обычной страницы тогда будет обернут в <h2>.. </h2> тэги, а если мы находимся на странице таксономии <h2 class="taxonomy-title">...</h2>. Вы можете определить стиль отображения заголовка с помощью CSS. Например так:
h2.taxonomy-title {
/* стили по вкусу */
}
.taxonomy-term-info {
/* стили по вкусу */
}
Для arg() не имеет значения, используете ли Вы алиасы или нет — параметры для таксономии и страницы агрегатора для Drupal остаются тем же самым.
Затем добавим некоторые тесты, чтобы видеть, получили мы хоть один ID. В этом случае, я должен переместить код в функцию в template.php и вызвать его вpage.tpl.php.
Есть возможность подменить стандартный вывод описания термина. Для этого в template.php вы должны добавить следующий код:
<?php
function MYTHEME_taxonomy_term_page($tids, $result) { // MYTHEME - название вашей темы
// Добавить CSS если это страница таксономии
drupal_add_css(drupal_get_path('module', 'taxonomy') .'/taxonomy.css');
// Отобразить описание только для одиночного термина
if (count($tids) == 1) {
$term = taxonomy_get_term($tids[0]);
$description = $term- >description;
// Проверка на наличие описания
if (!empty($description)) {
$output = ' <div class="custom-taxonomy-description">';
$output .= filter_xss_admin($description);
$output .= ' </div>';
}
}
$output .= taxonomy_render_nodes($result);
return $output;
}
?>
Для подмены класса заголовка, в page.tpl.php для формирования заголовка используем следующий код.
<h2<?php print (arg(0) == 'taxonomy') ? ' class="taxonomy-title"' : '';?>>
<?php print $title; ?>
</h2>