Intereting Posts
Проверка заголовков HTTP при запросе маршрута, сгенерированного из представлений Создайте блок, показывающий последний из определенного типа содержимого Получение контекстных ссылок в пользовательских шаблонах страниц Как вставить поля имени пользователя и электронной почты drupal для создания формы бронирования? Добавить кнопку удалить элемент на странице проверки Меню OG не отображается в параметрах родительского меню Отображать сообщение вместо перенаправления на страницу «Отказано в доступе» Выделение поля из ссылки на сущность в шаблоне ветви? Как использовать модуль Newsletter? Цена обновления Drupal Commerce через ajax удалить tabindex -1 из просмотров аккордеон Как сделать точное совпадение заголовка первым в API поиска 403 цикл переадресации на каждой странице Как удалить узел в системе меню, когда пользователь обновил статью определенного типа контента Как я могу ограничить страницу входа администратора / администратора только конкретным IP-адресом?

Как отправить электронное письмо автору узла после выбора определенного значения в выбранном поле списка?

введите описание изображения здесь

На самом деле это мой контент, и в нем есть одно поле списка. Если я выберу «Новый мусор» и нажмите «Сохранить», я должен создать письмо автору. Если, однако, я выбираю любое другое значение для этого поля (и нажимаю на сохранение), тогда нет необходимости генерировать электронное письмо.

Как я могу это сделать?

Solutions Collecting From Web of "Как отправить электронное письмо автору узла после выбора определенного значения в выбранном поле списка?"

Вы можете использовать hook_node_presave (), и в этой функции проверьте, является ли значение выбора «новым мусором» и генерирует электронную почту.

function YOUR_MODULE_NAME_node_presave($node){ if($node->type == 'YOUR_CONTENT_TYPE'){ //get your field value $field = field_get_items('node', $node, 'YOUR_FIELD_MACHINE_NAME')[0]['value']; //check if value equals "new litter" key if($field == 'NEW_LITTER_KEY'){ generate_email(); } } } 

изменить строчные буквы с именами модулей и машин

Надежда ниже кода поможет вам.

 function mycustom_node_insert($node) { switch ($node->type) { case 'cage-card-info': $warning = $node->field_warnings['und'][0]['value'] if($warning == "new litter"){ $user = user_load($node->uid); $authr_email = $user->email; //Send mail function to the author } break; } } 

Ниже приведен пример правила (в формате экспорта правил ), который отправит электронную почту, аналогичную тому, что задано в вопросе:

 { "rules_notify_author_of_selected_field_updates" : { "LABEL" : "Notify author of selected field updates", "PLUGIN" : "reaction rule", "OWNER" : "rules", "REQUIRES" : [ "rules" ], "ON" : { "node_update" : [], "node_insert" : [] }, "IF" : [ { "entity_has_field" : { "entity" : [ "node" ], "field" : "field_optionlist" } }, { "data_is" : { "data" : [ "node:field-optionlist" ], "value" : "C" } } ], "DO" : [ { "mail" : { "to" : "[node:author:mail]", "subject" : "Notification about a node with a special field value", "message" : "Go checkout the node with nid [node:nid] and title [node:title]: it has a field with a value you needed to be informed about ..." } } ] } } 

Некоторые подробности для дальнейшего объяснения вышеприведенного примера:

  • Событие «Правила», которое я использую, это «После сохранения нового содержимого» или «Обновление существующего контента.
  • В моем случае у меня есть поле списка выбора с именем field_optionlist .
  • Это поле фактически имеет 3 возможных значения, например:
    • A (= Дополнительно).
    • B (= Базовый).
    • C (= Пользовательский).
  • В качестве образца я решил использовать в качестве условия «Выбранное значение должно быть« Custom ».
  • Если это значение выбрано, то (как действие правил) электронная почта будет инициирована автору узла.

Измените имя поля field_optionlist чтобы он соответствовал имени поля вашего типа контента, и адаптировал фактические данные электронной почты (тема и т. Д.) В соответствии с вашими потребностями. Затем импортируйте его на свой сайт (используя пользовательский интерфейс правил). Вот и все.