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


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.