Как в Drupal вывести текущую категорию для node и переписать taxonomy path с помощью Pathauto
Продолжительное время у меня на блоге в каждом посте под названием поста выводилась дата, кто разместил и по идее должны были выводиться категории, но на самом деле выглядело все примерно так: Posted on 09. Jun, 2011 by boris in. И на этом in все заканчивалось. В шаблоне blogbuzz был такой кусок кода:
<?php if ($terms): ?>
<span class="terms"><?php print t(' in ') $node_terms; ?></span>
?>В шаблоне который как правило используется по умолчанию (Garland), обычно выводятся вообще все Taxonomy terms, привязанные к текущей ноде. У меня к каждой ноде привязаны, категории и теги. Теги я отображать не хочу, они используются только в модуле "Similar By Terms", который под каждым постом выводит похожие по тематике посты, основываясь на тегах и категориях. Просто вывести все Taxonomy не составляет никакой проблемы (), они даже будут отформатированы как html-список. Мне хотелось под/над каждым постом просто категорию в которой находится конкретный пост. Я воспользовался функцией "taxonomy_node_get_terms_by_vocabulary". Для категорий может быть только один словарь, так что я просто выбрал самый первый элемент, и дальше с помощью drupal_get_path_alias получил текущий path alias:
<?php
// Цифра 1 - это ID словаря, в котором находятся категории
$categories = taxonomy_node_get_terms_by_vocabulary($node, 1);
$currentCategory = array_pop($categories);
$path = drupal_get_path_alias('taxonomy/term/'. $currentCategory->tid);
?>
<span class="terms"><?php print t(' in ') . "<a href='{$path}'>{$currentCategory->name}</a>"; ?></span>
?>