Надсилайте повідомлення електронною поштою, коли публікується новий коментар


15

Я використовую Drupal 8.1 з Правилами 8.x-3.0-alpha1.

Я хочу створити правило для надсилання електронного листа автору вузла, коли на цей вузол буде розміщено новий коментар. Проблема в тому, що я не отримав електронну адресу автора з правилами, оскільки набір даних дає мені лише ці значення: @ node.node_route_context: вузол чи коментар, але під коментарем я не знайшов нічого, як коментар: node: author. У Drupal 7 у мене є ці дані. Що мені робити в Drupal 8?


Альфа-статус Правил може означати, що ця функціональність ще не реалізована, і вам потрібно буде самостійно виправити її.
Боян Живанович

1
Дякую, але, здається, це проблема модуля токена. Оскільки інші модулі, як-от повідомлення про особи, не отримують автора: також пошту. Цей маркер здається зламаним.
lolhonk

Відповіді:


5

Оновлений відповідь

Під час тестування цього на новому встановленні Drupal 8 з правилами (Альфа 2) я зіткнувся з помилкою, яка перешкоджає успішному тестуванню цього, хоча селектор даних нижче правильний, я наразі не можу відтворити робоче правило.

Звіт про помилку знаходиться тут: https://www.drupal.org/node/2770291 - Для узагальнення цієї проблеми Правила очікує, що параметр TO: буде масивом і видасть помилку при передачі маркера адреси електронної пошти, нижче якого повертається рядок.

Моя початкова відповідь справедлива для Drupal 7, однак для Drupal 8 ситуація здається простішою і залежить від одного факту, який ще не є добре задокументованим.

У D7 ми знайомі з синтаксисом, що нагадує: comment:node:author:mail

У D8 той же селектор (який працює): comment.entity_id.entity.uid.entity.mail.value

Сподіваюся, що це допомагає, я залишаю попередню відповідь нижче, якщо вона допомагає комусь іншому.

Попередній відповідь

* Загалом із Правилами для використання значення поля правило спочатку повинно спеціально перевірити наявність поля (тобто, що поле має значення в контексті, в якому працює правило). Якщо ви ще цього не пробували, можливо, ви захочете спробувати додати в правило умову "Суб'єкт має поле", щоб перевірити наявність електронної адреси. Після цього слід відкрити маркер для поля.

У мене були подібні проблеми із виконанням правил, що використовують сутність відносин (що більш-менш те, що ви робите, посилаючись на автора з вузла), перевіряючи наявність поля (у вашому випадку, швидше за все, перевірка наявності у суб'єкта господарювання автор (це повинно відкрити доступ до об’єкта користувача), то перевірка проти об’єкта користувача, щоб переконатися, що у нього є адреса електронної пошти) відкрила доступні маркери поля від посилається сутності. *


Мені було б цікаво побачити робоче правило, включене в цю відповідь, яке насправді робить те, про що йдеться у цьому питанні ... для D8 . Чи можете ви оновити свій анверр, щоб включити такий приклад (використовуючи останню версію D8 модуля Правил ? PS: з числа оновлень цього питання, здається, що є й інші користувачі, які також шукають щось подібне ...
П'єр. Vriens

Звичайно, чудова ідея, для того, щоб створити це, мені знадобиться трохи часу, щоб розгорнути свіжий тестовий майданчик.
HomoTechsual

Не можете зачекати, щоб побачити вашу оновлену відповідь незабаром. Хоча розгортання відповідного сайту насправді лише за один клік ... скористайтеся https://simplytest.me/project/rules , прийміть (за замовчуванням) версію 8.x-3.0-alpha2 та натисніть " Запуск пісочниці " - кнопка. Після цього у вас з'явиться все, що вам потрібно, щоб "швидко" побудувати правило, яке ви маєте на увазі. Потім експортуйте його та скопіюйте / вставте цей експорт у свою відповідь тут. Тоді дайте мені знати (додатковий коментар?), Ваше правило готове до QA-огляду. Було б добре, якби ви могли розмістити його десь у найближчі дні ... якщо зможете.
Pierre.Vriens

Привіт @ Pierre.Vriens Я відредагував свій коментар, після гри з Правилами на D8 трохи далі, це виявляється менш складним, що я вважав, і більше результатом змінених селекторів у D8.
HomoTechsual

Також я не впевнений, чому я завжди забуваю про SimplyTest.me
HomoTechsual

1

У черзі випуску Правил є робочий приклад, який був розміщений у листопаді 2016 року, тож це було можливо принаймні з тих пір. Дивіться https://www.drupal.org/project/rules/isissue/2828422

Ось дещо змінена версія цієї відповіді. Ви можете імпортувати це на свій сайт і переглянути його в інтерфейсі, щоб дізнатися, як налаштувати цю функціональність.

langcode: en
status: true
dependencies: {  }
id: 'email_node_author_on_new_comment'
label: 'Email Node Author on New Comment - Issue 2828422'
events:
  -
    event_name: 'rules_entity_insert:comment'
description: 'Sends email to Node Author when a New Comment is added.'
tags:
  - node
  - email
  - comment
config_version: '3'
expression:
  id: rules_rule
  uuid: b5276280-d0f2-4f64-9512-06f077793c58
  conditions:
    id: rules_and
    uuid: ebf212fc-d858-417d-977d-af1be2cfd886
    conditions: {  }
  actions:
    id: rules_action_set
    uuid: 88a78280-2bca-4367-a4d3-8bbda9397c2a
    actions:
      -
        id: rules_action
        uuid: 5e6e5aed-b75f-412a-9670-48327eb58ba6
        context_values:
          to:
            - '{{ comment.entity_id.entity.uid.entity.mail }}'
          subject: 'Your content {{ comment.entity_id.entity.title }} has a new comment.'
          message: 'Your content {{ comment.entity_id.entity.title }} has a new comment.'
          reply: ''
          language: ''
        context_mapping: {  }
        context_processors:
          to:
            rules_tokens: {  }
          subject:
            rules_tokens: {  }
          message:
            rules_tokens: {  }
          reply:
            rules_tokens: {  }
          language:
            rules_tokens: {  }
        provides_mapping: {  }
        action_id: rules_send_email
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.