
Представьте, что ваш сайт - это большая библиотека с множеством книг на стеллажах. Конечно, вы сами, как сотрудник, так и ваши посетители, вполне оцените тот порядок, когда все предметы размещены систематизированно.
В идеале все книги должны располагаются на своих полках, должны быть аккуратно подписаны, их должно быть легко найти и управлять ими, а разные категории пользователей должны иметь доступ только к соответствующим их правам архивам. Вы назовете это идеальным порядком, и именно такой порядок можно создать на своем сайте.
Такая структура возможна благодаря инструменту для организации контента на сайтах Drupal, называемому таксономией. Этот инструмент встроен в ядро Drupal и является одной из самых востребованных и популярных его функций. Существуют также дополнительные модули, если нужно расширить стандартную функциональность.
В этой статье мы рассмотрим:
- Что такое таксономия в Drupal, и как она работает.
- Руководство по настройке ее шаг за шагом.
- Некоторые дополнительные модули, которые предоставляют дополнительные возможности.
Введение в таксономию Drupal
Таксономия в Drupal — это название методики классификации или категоризации контента, а также одноимённый модуль ядра Drupal, который занимается этим процессом. Вы можете связывать термины таксономии с конкретным контентом, что полезно для организации и отображения контента в зависимости от его классификации.
Основными понятиями в таксономии Drupal являются:
- Словарь таксономии — это набор (группа, список) терминов таксономи. Например, словарь категорий для блога сайта.
- Термин таксономии — это индивидуальный элемент, входящий в словарь. Например, "Наука", "Образ жизни", "Путешествия" и другие конкретные категории для блога.
Исходя из структуры, словарь может быть:
- плоским (просто набор терминов),
- иерархическим или вложенным (набор терминов, которые разворачиваются в подгруппы, представляющие подкатегории).
Кроме того, словари могут быть настроены так, чтобы контент мог использовать только один термин или несколько терминов одновременно.
Где используется таксономия в Drupal?
Таксономия в Drupal может быть использована в многочисленных сценариях, связанных с классификацией контента, например:
- блоги, сгруппированные по категориям,
- теги, добавляемые к контенту,
- страны, города, пол и другие характеристики в формах регистрации пользователей,
- рецепты, классифицированные по ингредиентам, кухне, типу блюда, уровню сложности и т.д.,
- товары электронной коммерции, классифицируемые по категориям, брендам, коллекциям и т.д.,
- состояния рабочих процессов (в процессе, черновик, опубликовано и т.д.),
- уровни доступа к контенту (открытый, закрытый, только для администрации и т.д.),
- меню, навигация и схемы URL,
- выбор вариантов отображения и многие другие.
Как создать таксономию в Drupal: пошаговое руководство
1. Создание словаря
Посмотрим, как это работает на практике, создав набор категорий для новостного раздела гипотетического университетского сайта. Мы начинаем с того, что идём в раздел Структура > Таксономия и нажимаем Добавить словарь.

Мы назовём наш словарь, например, "Категории новостей" и при желании добавим описание или оставим поле пустым.

После сохранения мы попадаем на страницу, где можем добавить термины в наш словарь.

Мы вводим название первой категории новостей, оставив поле описания пустым. В нижней части страницы есть удобная кнопка "Сохранить и перейти к списку", которая позволяет нам вернуться к списку и продолжить добавление категорий.


Если мы захотим добавить подчинённый термин, мы сможем указать родительский термин в закладке "Связи" при создании термина.

Однако иерархию терминов можно изменить и позже, зайдя на страницу словаря и воспользовавшись функцией перетаскивания. Если мы переместим термин вправо и под другой термин, он станет его дочерним термином.

2. Добавление таксономии в тип контента
Теперь перейдем в раздел Структура > Типы контента и найдём наш тип контента "Новости" (может быть любой другой тип контента, к которому вы хотите присоединить словарь). На вкладке "Управлять полями" нажмём "Добавить поле".

Выбираем тип поля "Термин таксономии", вписываем метку (например, "Категории"), и сохраняем.

Выбираем тип ссылаемого элемента — "Термин таксономии", устанавливаем неограниченное количество значений и сохраняем настройки поля.

На следующей странице выбираем метод ссылки по умолчанию и конкретный словарь, который мы хотим прикрепить к новостям. В нашем случае это будет недавно созданный словарь "Категории новостей".

После сохранения результата мы почти закончили. Однако давайте сделаем финальные штрихи и настроим, как категории будут отображаться на форме редактирования контента. Перейдём на вкладку "Управление отображением формы" типа контента "Новости". Рядом с полем "Категории" мы можем выбрать, в каком виде они будут показаны редакторам: выпадающий список, чекбоксы/радиокнопки, автозаполнение или автозаполнение в стиле тегов.
Выбор способа отображения зависит от предпочтений вашей команды и сложности словаря на вашем сайте Drupal. Например, вариант с чекбоксами/радиокнопками может быть удобен для редакторов, чтобы просмотреть полный список категорий, и именно его мы и выберем. Требуется нажать "Сохранить", как и на остальных этапах настройки.

Теперь всякий раз, когда мы публикуем новость, мы можем выбрать категорию из предложенного списка. Готово!

Топ лучших дополнительных модулей для таксономии в Drupal
Разработчиками создано множество отличных модулей, которые добавляют дополнительные возможности для работы с таксономией в Drupal. Рассмотрим некоторые из них:
Taxonomy Manager
Модуль Taxonomy Manager предлагает продвинутые возможности управления таксономией на сайтах Drupal. Словарь отображается в виде динамического дерева с раскрывающимися и сворачивающимися родительскими элементами. С модулем можно массово добавлять термины на всех уровнях иерархии, искать термины, экспортировать их в CSV-файлы и многое другое.

Taxonomy Multi-delete Terms
Если вам не нужна вся функциональность вышеупомянутого модуля, можно выбрать легкий инструмент, сосредоточенный на выполнении конкретной задачи. Например, модуль Taxonomy Multi-delete Terms поможет вам массово удалять термины. Всё, что нужно, — выбрать термины и кликнуть кнопку "Удалить".
Hierarchical Select
Если вы используете иерархические словари на своём сайте, модуль Hierarchical Select может быть очень полезен. Он предоставляет виджет формы для выбора элементов в иерархии усовершенствованным способом. Модуль можно настроить, чтобы сохранять всю линию предков выбранного термина или только глубинный термин. Также можно указать минимальный уровень, с которого пользователи могут выбирать элементы (самый глубокий уровень или любой уровень). Дополнительно можно задать метки уровней, ограничить количество выбираемых элементов и выполнить другие полезные настройки.
Taxonomy Access Fix
Модуль Taxonomy Access Fix позволяет настроить разрешения пользователей на управление конкретными словарями. Модуль добавляет права на изменение порядка терминов и просмотр терминов на уровне словарей. Эти права можно редактировать на странице Пользователи > Разрешения в административной панели Drupal. Кроме того, модуль скрывает словари с панели обзора словарей для пользователей, не имеющих прав на их управление.
Taxonomy Access Control Lite
С помощью модуля Taxonomy Access Control Lite вы сможете управлять разрешением на просмотр, редактирование и удаление контента на основе таксономии. Например, вы можете создать словарь с терминами "Закрытая", "Открытая", "Только персонал" или другими категориями, согласно вашим рабочим процессам, и прикрепить их к узлам контента для контроля доступа. Разрешения можно настроить как для ролей, так и для индивидуальных пользователей.
Permissions by Term
Ещё один модуль для управления доступом пользователей на основе таксономии — это Permissions by Term. Он пригодится, если вам нужно ограничить доступ к узлам контента и терминам таксономии на основе связи терминов с пользователями. Связанные с терминами разрешения могут быть применены как к целым ролям пользователей, так и к индивидуальным учётным записям. Подмодуль Permissions by Entity расширяет эту функциональность на другие сущности, например, мультимедийные объекты.
Views Taxonomy Term Name Depth
Модуль Views Taxonomy Term Name Depth расширяет возможности Drupal модуля Views — мощного инструмента для отображения контента на основе настроек. Модуль добавляет контекстный фильтр "Имеет термин таксономии с глубиной", что позволяет показывать контент на сайте, если он имеет выбранные термины или их дочерние термины.
Similar By Terms
Мы упомянули, что таксономия в Drupal позволяет назначать теги контенту. Модуль Similar By Terms предлагает возможность отображать блок похожего контента на основе тегов таксономии, назначенных контенту. Блок включает ссылки на индивидуальные узлы контента и отображается через Drupal модуль Views.
Taxonomy Term Reference Tree Widget
Модуль Taxonomy Term Reference Tree Widget предлагает продвинутое представление для поля ссылки на термин. Он заменяет базовый виджет (чекбокс или радио-кнопки) расширенным древовидным виджетом с дополнительными функциями, такими как фильтрация и сортировка опций через Views, раскрытие или закрытие дерева по умолчанию и т.д.
Taxonomy Menu UI
С модулем Taxonomy Menu UI легко создавать пункты меню прямо со страницы таксономии вашего сайта Drupal. Он отображает доступные меню на странице редактирования словаря, позволяя выбрать пункт меню для каждого термина при его добавлении или редактировании.
Taxonomy Unique
Вы можете быть уверены, что ваши термины никогда не будут дублироваться, если воспользуетесь модулем Taxonomy Unique. Он не позволит пользователю сохранить термин, если термин с таким же названием уже существует. Эту настройку можно регулировать индивидуально для каждого словаря. Также можно настроить сообщение об ошибке, которое будет показано пользователям при обнаружении дублей.
Заключение
Таксономия в Drupal оказывается незаменимой в широком диапазоне сценариев на вашем сайте. Она позволяет разработчикам создавать сценарии любой сложности, а базовый рабочий процесс выбора/добавления/уничтожения терминов прост и понятен для редакторов, не знакомых с техническими нюансами.