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?
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. *
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