Drupal отображает термины таксономии для одной конкретной роли на узел
Структура мне нужно реализовать:
- Узел ссылается на несколько терминов таксономии типа person.
- Человек играет одну конкретную роль на узел.
- Эта роль отличается от роли терминов таксономии в другом узле.
- Термин таксономии не должен указывать роль, поэтому роль также может быть пустой.
Пример для лучшего описания желаемого поведения:
- Фильм содержит термины таксономии в качестве актеров.
- Актер имеет роль "Магнето" на узле А и роль "Гэндальф" на узле Б.
Возможный способ реализации, о котором я могу думать прямо сейчас:
- Добавьте пользовательскую таблицу nid_tid_role_mapping в базу данных drupal со следующими полями: nid, tid, role_name
- Подключитесь к node_presave и получите все термины таксономии актера.
- Получите только те, которые имеют следующий формат "Имя актера (роль)" (например, "Иэн МакКеллен (Магнето)")
- Добавьте nid, tid и роль в таблицу nid_tid_role_mapping
- После добавления роли, nid и tid переименуйте термин таксономии обратно в "Имя актера".
- Добавьте специальную таблицу в форму редактирования узла, в которой перечислены термины имя / назначение ролей этого узла.
Мой подход кажется мне немного излишним. Есть ли модуль, который мог бы помочь мне с этим? Я не смог ничего найти...
1 ответ
Как насчет создания двух словарей, словаря "актер" и "персонаж". Узел типа "фильм" ссылается на "персонаж" (возможно, и "актер"), а словарь "персонаж" ссылается на словарь "актер".
Другой способ - создать типы узлов вместо терминов таксономии и создать отношения между ними с помощью модуля "entityreference". Возможно, это лучшее решение, если вы хотите избежать нескольких терминов "Джеймс Бонд" (по одному для каждого актера).
В прошлом я тоже пробовал модуль "отношение", но тогда он был сложным для моих нужд, и он не так популярен, как "ссылки на сущности"