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 10 Comments

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

Доброго дня.

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

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

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

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

Доброго дня.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Страницы

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

You must have Javascript enabled to use this form.