Drupal отображает термины таксономии для одной конкретной роли на узел

Структура мне нужно реализовать:

  1. Узел ссылается на несколько терминов таксономии типа person.
  2. Человек играет одну конкретную роль на узел.
  3. Эта роль отличается от роли терминов таксономии в другом узле.
  4. Термин таксономии не должен указывать роль, поэтому роль также может быть пустой.

Пример для лучшего описания желаемого поведения:

  1. Фильм содержит термины таксономии в качестве актеров.
  2. Актер имеет роль "Магнето" на узле А и роль "Гэндальф" на узле Б.

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

  1. Добавьте пользовательскую таблицу nid_tid_role_mapping в базу данных drupal со следующими полями: nid, tid, role_name
  2. Подключитесь к node_presave и получите все термины таксономии актера.
  3. Получите только те, которые имеют следующий формат "Имя актера (роль)" (например, "Иэн МакКеллен (Магнето)")
  4. Добавьте nid, tid и роль в таблицу nid_tid_role_mapping
  5. После добавления роли, nid и tid переименуйте термин таксономии обратно в "Имя актера".
  6. Добавьте специальную таблицу в форму редактирования узла, в которой перечислены термины имя / назначение ролей этого узла.

Мой подход кажется мне немного излишним. Есть ли модуль, который мог бы помочь мне с этим? Я не смог ничего найти...

1 ответ

Решение

Как насчет создания двух словарей, словаря "актер" и "персонаж". Узел типа "фильм" ссылается на "персонаж" (возможно, и "актер"), а словарь "персонаж" ссылается на словарь "актер".

Другой способ - создать типы узлов вместо терминов таксономии и создать отношения между ними с помощью модуля "entityreference". Возможно, это лучшее решение, если вы хотите избежать нескольких терминов "Джеймс Бонд" (по одному для каждого актера).

В прошлом я тоже пробовал модуль "отношение", но тогда он был сложным для моих нужд, и он не так популярен, как "ссылки на сущности"

Другие вопросы по тегам