Drupal: Вывод терминов таксономии с учетом иерархии

В этой статье рассмотрен вопрос как вывести список терминов Таксономии через систему представлнеий Drupal. Для плоского списка никаких сложностей возникнуть не должно. Другое дело, если термины Таксономии имеют дочерние элементы. В этом случае, если попробовать вывести список через систему представлений(Views) Drupal, он будет выведен без учета иерархии, как обычный плоский список.

Шаг 1. Установите модули Drupal

Для настройки нам потребуются модули:

Как их установить, можно посмотреть в статье: Как установить модуь Drupal. В данный момент подразумевается что модули установлены и включены.

Шаг 2. Создайте словарь таксономии и наполните его терминами

Шаг 3. Создайте представление

  • Зайдите в меню "Структура - Представления".
  • Создайте представление, отображающее термины таксономии:

Нажмите кнопку Продолжить редактирование, для перехода к настройке только что созданного представления.

Шаг 4. Отредактируйте представление

В разделе Отношения (Relation): нажмите кнопку Добавить и в открывшемся окне найдите "Термин таксономии: Родительский термин" ("parent term"), идентификатор можно оставить по умолчанию.

Добавте в представление поле для родителя

  1. Создайте поле " Термин таксономии: ID термина". В выпадающем списке "Связь" выберите единственный пункт Родитель.
  2. Установите чекбокс "Создать метку" и в качестве метки укажите "Родитель"
  3. Установите чекбокс Исключить из вывода
  4. Нажмите кнопку Применить

Создайте второе поле для самого термина

Процедура та-же самая, только в выпадающем списке "Связь" не нужно ничего выбирать и в качестве метки указать "Термин".

Шаг 5. Настройте формат вывода представления

Если при создании представления у вас указан другой формат вывода, измените его на "Tree (Adjacency model)".

В окне настройки "Tree (Adjacency model)" выбираем:

  • В виде списка: Маркированный список(Ordered list)
  • В выпадающем списке Main field выбираем TID второго добавленного поля (метку ему мы присвоили Термин)
  • В выпадающем списке Parent field выбираем TID первого добавленного поля (метку ему мы присвоили Родитель)

Результирующий список терминов должен выглядеть так:

Единственное замечание - если в предварительном просмотре у вас отображается простой плоский список, не пугайтесь - просто в каскадных стилях не настроены отступы:

There are 12 Comments

Все сделал как описано выше.

Все сделал как описано выше. Но у меня выводятся только TID'ы терминов. Пробовал заменить поля TermID на TermName - вьюс выдает ошибку аякс-запроса. В чем может быть дело?

следует установить чекбокс "Исключить из вывода"

Доброго дня.

Для того, чтоб поля ID термина не выводились, следует в параметрах обоих полей установить чекбокс "Исключить из вывода" , а для того, чтоб выводились названия - добавить еще одно поле Термин таксономии: Название.

Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

Здравствуйте!

Здравствуйте!

Похожая проблема. В настройках формата Tree (Adjacency model) не показывается родитель, хотя в отношениях и выводимых полях он есть. Этот модуль расценивает их как одинаковое поле. Вот картинка: http://borisoglebsk.su/share/views-tree.png

Вы немного ошиблись

Доброго дня.

У вас закралось две ошибочки.

Первая - это то, что нужно использовать поле Термин таксономии: ID Термина, а не Термин таксономии: Название.

А вторая - это то, что родитель и не должен показываться в этом списке. Надпись в скобках Родитель говорит о том, что в поле Связь указана связь Родитель.

Для наглядности, я немного изменил название полей, чтоб стало немного понятнее:

Обратите внимание, что минимум поля должно быть три - Название, и два идентификатора термина.

Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

Замечание: Если число

Замечание: Если число терминов велико, то число Items per page надо установить не менее, чем число терминов, так как это число входит в запрос к базе данных и, если не все термины извлекутся, то и иерархию составить не получится.

Спасибо за замечание

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

Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

drupal

"Создайте второе поле для самого термина"

Поля -> добавить
Термин таксономии: Term edit link
Термин таксономии: Вес
Термин таксономии: Имя
Термин таксономии: Описание термина

Что именно добавить?

Термин таксономии: ID термина

Термин таксономии: ID термина

Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

Collapsible view

Collapsible view как я понял позволяет сворачивать список?

не работает у меня. при каких условиях должен функционировать?

Не понял сути вопроса. В

Не понял сути вопроса. В статье вроде нет раскрывающихся представлений. на вскидку гугл показывает варианты типа этого

Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.

Вывод терминов в виде деревв

Все получилось, спасибо большое за урок! =)

Не пустые термины

Доброго времени.

А как вывести только те термины, которые используются в материалах, а пустые скрыть?

Если добавлять к представлению связь "Термин таксономии: Материалы с термином" и ставить чекбокс, что эта связь обязательна то исчезает родитель в списке и остаются только дочерние термины, которые используются в материалах.

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <s> <u> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <hr> <dd> <sub> <sup>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Защита от СПАМ ботов. Подтвердите, пожалуйста, что вы человек.
13 + 2 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.