Предоставление пользователям возможности добавлять термины таксономии, но требование администраторов проверять их

8

Я хотел бы разрешить пользователям добавлять новые термины таксономии, но я бы хотел, чтобы это проверил администратор. Я предполагаю, что эта работа позволит пользователю заполнить форму, которая отправит уведомление указанному администратору; затем, если администратор согласится с запросом пользователей, будет запущен некоторый хук или метод, который создаст новый термин таксономии.

Есть ли способ сделать это с Drupal?

Mike2012
источник
2
Это определенно хорошая идея для нового модуля (я не знаю ни одного модуля, который бы предлагал такую ​​функциональность в настоящее время). Лучшее начало, вероятно, обойтись hook_taxonomy_term_insert.
Пол

Ответы:

8

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

  1. Установите http://drupal.org/project/workflow
  2. Добавьте в свою таксономию поле с именем «Опубликован» или «Утверждено», которое является логическим флажком
  3. Настройте рабочий процесс, который запускается при создании термина таксономии, с утвержденным как поле, доступное только администраторам.
  4. Напишите крючок в терминах таксономии, который удаляет термин, если он не утвержден (это сложная часть - существует множество способов добраться до терминов таксономии, поэтому это может сделать этот подход спорным).

Альтернатива: так как вы упомянули пользователя, заполняющего форму - вы можете довольно легко иметь тип контента под названием «Термин таксономии» или что-то с необходимыми полями таксономии, а затем использовать рабочий процесс / правила, чтобы отправить представление администратору, после утверждения используйте правила или пользовательский код для создания нового термина таксономии.

Джошуа Стюардсон
источник
1
Хорошая идея. Чтобы обратиться к 4-му пункту, вы могли бы легко реализовать hook_taxonomy_term_view_alter(), проверить, одобрен ли термин или нет, и применить '#access' => FALSEк массиву рендеринга, чтобы предотвратить его отображение. Это должно работать во всей системе (за исключением, возможно, представлений на основе таксономии, которые используют поля вместо режимов просмотра и не выполняют дополнительную проверку).
Клайв
3

Я никогда не делал ничего подобного, но мой подход заключается в создании типа контента «предлагаемый термин таксономии» и моделировании логики с помощью модуля «Правила» .

phaer
источник