Вывод терминов определенного словаря на странице ноды

Главные вкладки

Аватар пользователя Equ@drupal.org Equ@drupal.org 13 февраля 2009 в 22:15

Нашел сниппет, который выводит список терминов определенного словаря на странице ноды:

<?php foreach ($node->taxonomy as $item) {
                        if ( $item->vid == 24 ) {
                            print '<li>'. $item->name .'</li>';
                            }
                        }
?>

Где vid - id словаря таксономии.

Как туда добавить вывод названия словаря?

Спасибо.

Комментарии

Аватар пользователя gorr gorr 14 февраля 2009 в 0:54

Если Вы уже вручную id словаря вписываете, то также куда Вам надо и его название вписывайте

print '<li>Словарь 24|'. $item->name .'</li>';

если конечно я правильно понял...

Аватар пользователя Equ@drupal.org Equ@drupal.org 14 февраля 2009 в 11:14

Если я сделаю, как Вы предложили, то получится, скорее всего, так:

Название словаря| Термин 1
Название словаря| Термин 2
Название словаря| Термин 3...

а нужно:
Название словаря
Термин 1
Термин 2
Термин 3

Я просто не знаю, как конкретно изменить код. Если я делаю:

<?php foreach ($node->taxonomy as $item) {
                        if ( $item->vid == 24 ) {
                            print 'Название словаря';
                            print '<li>'. $item->name .'</li>';
                            }
                        }
?>

То выводится:

Название словаря
Термин 1
Название словаря
Термин 2

и т.д...

Аватар пользователя gorr gorr 14 февраля 2009 в 12:57
<?php
print '<h2>Название словаря</h2>';
foreach ($node->taxonomy as $item) {
                        if ( $item->vid == 24 ) {
                            print '<li>'. $item->name .'</li>';
                            }
                        }
?>

тогда Вам так надо например.

Аватар пользователя Equ@drupal.org Equ@drupal.org 14 февраля 2009 в 13:29

Вот в том-то и проблема, что вывод названия словаря тоже должен быть в "if" Smile Если терминов данного словаря нет, то и название выводить не нужно.

Аватар пользователя gorr gorr 15 февраля 2009 в 14:00

<?php
$my_terms_output = '';
foreach ($node->taxonomy as $item) {
if ( $item->vid == 24 ) {
$my_terms_output .= '

  • '. $item->name .'
  • ';
    }
    }
    $my_terms_output = $my_terms_output ? '

    Название словаря

      '. $my_terms_output. '

    ' : '';
    print $my_terms_output;
    ?>

    Аватар пользователя Creed Creed 6 марта 2009 в 3:05

    Нашел более интересное решение. Можно вывести или в виде списка или все термины в одну строчку, разделенные запятыми. Причем названия терминов в данном случае предствляют собой ссылки соответствующую страницу.

    <?php
                          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; ?>
    Аватар пользователя dimon4ik dimon4ik 17 марта 2009 в 12:18

    Вот такое решение для 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;
    ?>

    Аватар пользователя iNFerNo iNFerNo 8 ноября 2010 в 10:08

    Подскажите как вывести термин словаря рядом с титлом ноды, который привязан к этой ноде

    т.е.

    есть словарь разделы с терминами (новости, отчеты, публикации)

    необходимо вывести в ноде

    термин -> титл ноды

    юзал поиск там все массивы да списки выводят...

    Аватар пользователя baklanaft baklanaft 19 апреля 2011 в 16:52

    Не Подскажите как сделать чтобы он показывал внутренности словаря ссылками? те print $item->name выводил только метки словаря без ссылок на них.
    Спасибо.