web-dev-qa-db-fra.com

Envoyer une notification par e-mail lorsqu'un nouveau commentaire est publié

J'utilise Drupal 8.1 avec les règles 8.x-3.0-alpha1.

Je souhaite créer une règle pour envoyer un e-mail à l'auteur d'un nœud lorsqu'un nouveau commentaire est publié sur ce nœud. Le problème est que je n'ai pas obtenu l'adresse e-mail de l'auteur avec des règles parce que l'ensemble de données ne me donne que ces valeurs: @ node.node_route_context: node ou comment mais sous comment je n'ai rien trouvé comme comment: node: author. Dans Drupal 7 J'ai ces données. Que dois-je faire dans Drupal 8?

15
lolhonk

Réponse mise à jour

En testant ceci sur une nouvelle installation de Drupal 8 avec des règles (Alpha 2), je suis tombé sur un bogue qui empêche un test réussi de cela, tandis que le sélecteur de données ci-dessous est correct Je ne suis actuellement pas en mesure de reproduire une règle de travail.

Le rapport de bogue est ici: https://www.drupal.org/node/2770291 - Pour résumer ce problème, Rules attend que le paramètre TO: soit un tableau et jette un erreur lors du passage du jeton d'adresse e-mail ci-dessous qui renvoie une chaîne.

Ma réponse initiale est vraie pour Drupal 7 cependant pour Drupal 8 la situation semble plus simple et repose sur un seul fait qui n'est pas encore bien documenté).

En D7, nous connaissons une syntaxe ressemblant à: comment:node:author:mail

En D8, le même sélecteur (qui fonctionne) est: comment.entity_id.entity.uid.entity.mail.value

J'espère que cela aide, je laisse la réponse précédente ci-dessous au cas où cela aiderait quelqu'un d'autre.

Réponse précédente

* En général, avec Rules pour utiliser la valeur d'un champ, la règle doit d'abord vérifier spécifiquement l'existence du champ (c'est-à-dire que le champ a une valeur dans le contexte où la règle est en cours d'exécution). Si vous n'avez pas déjà essayé cela, vous voudrez peut-être essayer d'ajouter une condition "L'entité a un champ" à la règle pour vérifier l'existence de l'adresse e-mail. Cela devrait ensuite exposer le jeton pour le champ.

J'ai rencontré des problèmes similaires lors de l'exécution de règles à l'aide de relations d'entité (ce qui est plus ou moins ce que vous faites en référençant l'auteur à partir du nœud) pour vérifier l'existence du champ (dans votre cas, très probablement une vérification que l'entité a un auteur (cela devrait ouvrir l'accès à l'objet utilisateur) puis une vérification par rapport à l'objet utilisateur pour s'assurer qu'il a une adresse e-mail) a ouvert les jetons de champ disponibles à partir de l'entité référencée. *

5
HomoTechsual

Il y a un exemple de travail dans la file d'attente des problèmes de règles qui a été publiée en novembre 2016, donc cela a été possible au moins depuis. Voir https://www.drupal.org/project/rules/issues/2828422

Voici une version légèrement modifiée de cette réponse. Vous pouvez l'importer dans votre site et le consulter dans l'interface utilisateur pour savoir comment configurer cette fonctionnalité.

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
1
anonymous