E-Mail-Benachrichtigung senden, wenn ein neuer Kommentar veröffentlicht wird

15

Ich verwende Drupal 8.1 mit Rules 8.x-3.0-alpha1.

Ich möchte eine Regel erstellen, um eine E-Mail an den Autor eines Knotens zu senden, wenn ein neuer Kommentar an diesen Knoten gesendet wird. Das Problem ist, dass ich die E-Mail-Adresse des Autors mit den Regeln nicht erhalten habe, weil der Datensatz nur die folgenden Werte angibt: @ node.node_route_context: node oder comment, aber unter comment habe ich nichts wie comment: node: author gefunden. In Drupal 7 habe ich diese Daten. Was muss ich in Drupal 8 tun?

lolhonk
quelle
Der Alpha-Status von Rules kann bedeuten, dass diese Funktionalität noch nicht implementiert ist und Sie sie selbst patchen müssen.
Bojan Zivanovic
1
Danke, aber es scheint ein Problem des Token-Moduls zu sein. Weil andere Module wie die Entitätsbenachrichtigung nicht den Autor erhalten: auch Mail. Dieses Token scheint kaputt zu sein.
Lolhonk

Antworten:

5

Aktualisierte Antwort

Während ich dies auf einer Neuinstallation von Drupal 8 mit Rules (Alpha 2) testete, stieß ich auf einen Fehler, der einen erfolgreichen Test verhindert, obwohl die unten stehende Datenauswahl korrekt ist. Derzeit kann ich keine funktionierende Regel reproduzieren.

Der Fehlerbericht ist hier: https://www.drupal.org/node/2770291 - Um dieses Problem zusammenzufassen, erwartet Rules, dass der TO: -Parameter ein Array ist, und gibt einen Fehler aus, wenn das E-Mail-Adressentoken übergeben wird, unter dem ein zurückgegeben wird Zeichenfolge.

Meine erste Antwort gilt für Drupal 7, aber für Drupal 8 scheint die Situation einfacher zu sein und hängt von einer einzigen Tatsache ab, die noch nicht gut dokumentiert ist.

In D7 kennen wir eine Syntax, die ungefähr so ​​aussieht: comment:node:author:mail

In D8 ist derselbe Selektor (der funktioniert): comment.entity_id.entity.uid.entity.mail.value

Hoffentlich hilft das. Ich lasse die vorherige Antwort unten, falls es jemand anderem hilft.

Vorherige Antwort

* Im Allgemeinen muss bei Regeln, um den Wert eines Felds zu verwenden, die Regel zuerst speziell auf das Vorhandensein des Felds prüfen (dh, dass das Feld einen Wert in dem Kontext hat, in dem die Regel ausgeführt wird). Wenn Sie dies noch nicht versucht haben, können Sie versuchen, der Regel eine Bedingung "Entität hat Feld" hinzuzufügen, um zu überprüfen, ob die E-Mail-Adresse vorhanden ist. Dies sollte dann das Token für das Feld verfügbar machen.

Ich hatte ähnliche Probleme bei der Ausführung von Regeln mit Entitätsbeziehungen (das ist mehr oder weniger das, was Sie tun, indem Sie den Autor vom Knoten aus referenzieren), bei der Überprüfung der Existenz des Feldes (in Ihrem Fall höchstwahrscheinlich eine Überprüfung, die die Entität hat) author (dies sollte den Zugriff auf das Benutzerobjekt ermöglichen) und anschließend eine Prüfung des Benutzerobjekts, um sicherzustellen, dass es eine E-Mail-Adresse hat.) öffnete die verfügbaren Feld-Token der Entität, auf die verwiesen wird. *

HomoTechsual
quelle
Es würde mich interessieren, eine Arbeitsregel in dieser Antwort zu sehen, die tatsächlich das tut, worum es bei dieser Frage geht ... für D8 . Können Sie Ihre Antwort aktualisieren, um ein solches Beispiel aufzunehmen (unter Verwendung der neuesten D8-Version des Rules- Moduls? PS: Aus der Anzahl der Upvotes zu dieser Frage geht hervor, dass andere Benutzer ebenfalls nach etwas Ähnlichem suchen ...
Pierre. Vriens
Klar, und eine großartige Idee. Ich brauche ein wenig Zeit, um eine neue Test-Site zu erstellen.
HomoTechsual
Ich kann es kaum erwarten, Ihre aktualisierte Antwort bald zu sehen. Obwohl das Hochfahren einer geeigneten Site nur einen Klick entfernt ist ... Verwenden Sie https://simplytest.me/project/rules , akzeptieren Sie die (Standard-) Version von 8.x-3.0-alpha2 und klicken Sie auf " Sandbox starten ". Taste. Nachdem Sie dies getan haben, haben Sie alles an der richtigen Stelle, um die von Ihnen beabsichtigte Regel "schnell" zu konstruieren. Exportiere es dann und kopiere / füge den Export in deine Antwort hier ein. Dann teilen Sie mir mit (zusätzlicher Kommentar?), Dass Ihre Regel für die Qualitätsprüfung bereit ist. Wäre nett, wenn du es in den nächsten Tagen irgendwo posten könntest ... wenn du kannst.
Pierre.Vriens
Hallo @ Pierre.Vriens, ich habe meinen Kommentar bearbeitet, nachdem ich ein wenig weiter mit Rules auf D8 gespielt habe, stellt sich dies als weniger komplex heraus, als ich dachte, und eher als Ergebnis geänderter Selektoren in D8.
HomoTechsual
Ich bin mir auch nicht sicher, warum ich SimplyTest.me
HomoTechsual 16.11.16
1

Es gibt ein funktionierendes Beispiel in der Regelausgabewarteschlange, das im November 2016 veröffentlicht wurde. Dies ist also zumindest seitdem möglich. Siehe https://www.drupal.org/project/rules/issues/2828422

Hier ist eine leicht modifizierte Version dieser Antwort. Sie können dies in Ihre Site importieren und in der Benutzeroberfläche anzeigen, um zu erfahren, wie Sie diese Funktionalität konfigurieren.

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
anonym
quelle