2015-03-16 2 views
0

Я хочу сделать это очень конкретно с моим узлом. Кажется простым, это может быть сложно.Сохранение/редактирование узла Drupal

Есть два пользователя, модераторы и зарегистрированы.

Модераторы и зарегистрированные пользователи могут редактировать узлы.

Когда модератор редактирует узел, изменения производятся на этом узле, и эти изменения сохраняются.

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

Возможно ли это с ядром Drupal. Кажется, что что-то должно быть легким, но оно все больше похоже на единственное решение - сделать хакерское исправление с ядром, что мне никогда не приходилось делать.

ответ

0

Не взламывайте сердечник - у drupal есть хорошая функция, называемая крючками.

Во-первых, вы должны создать свой модуль. Не трудно, что нужно делать ... только Google об этом, но в основном:

https://www.drupal.org/developing/modules/7

Затем в файле модуля добавить функцию крючка. То есть

https://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_presave/7

При регистрации вы действуете в качестве hook_node_presave (давая его точное название) ваша функция будет вызываться перед узлом любого типа сохраняется. Таким образом, внутри этой функции вы можете проверить, кто такой пользователь, какую роль он имеет, какой тип контента сохраняется в настоящее время и что делать дальше.

Если это модератор - ничего не делайте.

Но если это зарегистрированный пользователь, создайте новый узел здесь, используя данные, представленные в переменной $ node. А затем отменить сохранение текущего узла:

https://drupal.stackexchange.com/questions/41340/prevent-node-from-being-saved

Смежные вопросы