Нашел сниппет, который выводит список терминов определенного словаря на странице ноды:
<?php foreach ($node->taxonomy as $item) {
if ( $item->vid == 24 ) {
print '<li>'. $item->name .'</li>';
}
}
?>
if ( $item->vid == 24 ) {
print '<li>'. $item->name .'</li>';
}
}
?>
Где vid - id словаря таксономии.
Как туда добавить вывод названия словаря?
Спасибо.
Комментарии
Если Вы уже вручную id словаря вписываете, то также куда Вам надо и его название вписывайте
если конечно я правильно понял...
Если я сделаю, как Вы предложили, то получится, скорее всего, так:
Название словаря| Термин 1
Название словаря| Термин 2
Название словаря| Термин 3...
а нужно:
Название словаря
Термин 1
Термин 2
Термин 3
Я просто не знаю, как конкретно изменить код. Если я делаю:
if ( $item->vid == 24 ) {
print 'Название словаря';
print '<li>'. $item->name .'</li>';
}
}
?>
То выводится:
Название словаря
Термин 1
Название словаря
Термин 2
и т.д...
print '<h2>Название словаря</h2>';
foreach ($node->taxonomy as $item) {
if ( $item->vid == 24 ) {
print '<li>'. $item->name .'</li>';
}
}
?>
тогда Вам так надо например.
Вот в том-то и проблема, что вывод названия словаря тоже должен быть в "if" Если терминов данного словаря нет, то и название выводить не нужно.
Товарисчи, помогите с PHP...
<?php
$my_terms_output = '';
foreach ($node->taxonomy as $item) {
if ( $item->vid == 24 ) {
$my_terms_output .= '
';
}
}
$my_terms_output = $my_terms_output ? '
Название словаря
'. $my_terms_output. '
' : '';
print $my_terms_output;
?>
Спасибо, все работает
подскажите данный код будет работать на 5ой версии drupal?
P.S. у меня в 5ой версии не работает.
Нашел более интересное решение. Можно вывести или в виде списка или все термины в одну строчку, разделенные запятыми. Причем названия терминов в данном случае предствляют собой ссылки соответствующую страницу.
if (count($taxonomy)):
// заменить 8 номером нужного словаря
$terms = taxonomy_node_get_terms_by_vocabulary($node, 8);
$items = array();
if ($terms) {
foreach ($terms as $key => $term) {
$items[] = l($term->name, taxonomy_term_path($term), array('attributes' => array('rel' => 'tag', 'title' => $term->description)));
}
print '<p>' . t("Название словаря: <br>") . implode(', ', $items) . '</p>';
// Можно вывести и в виде списка.
//print 'Название словаря:';
//print theme('item_list', $items);
}
endif; ?>
Вот такое решение для 5 версии:
<?php
$my_terms_output = '';
$tree = taxonomy_get_tree($vid);
if ($tree) {
foreach ($tree as $term) {
$title = l($term->name,taxonomy_term_path($term));
if (taxonomy_term_count_nodes($term->tid))
$my_terms_output .= $title .'
';
}
}
$my_terms_output = $my_terms_output ? '
Название словаря
'. $my_terms_output. '
' : '';
print $my_terms_output;
?>
Подскажите как вывести термин словаря рядом с титлом ноды, который привязан к этой ноде
т.е.
есть словарь разделы с терминами (новости, отчеты, публикации)
необходимо вывести в ноде
термин -> титл ноды
юзал поиск там все массивы да списки выводят...
Не Подскажите как сделать чтобы он показывал внутренности словаря ссылками? те print $item->name выводил только метки словаря без ссылок на них.
Спасибо.