我正在使用带有规则8.x-3.0-alpha1的Drupal 8.1。
我想创建一个规则,以便在向该节点发布新评论时向该节点的作者发送电子邮件。问题是我没有获得带有规则的作者的电子邮件地址,因为数据集仅给我以下值:@ node.node_route_context:node或comment,但是在comment下我找不到诸如comment:node:author之类的东西。在Drupal 7中,我有此数据。我在Drupal 8中需要做什么?
我正在使用带有规则8.x-3.0-alpha1的Drupal 8.1。
我想创建一个规则,以便在向该节点发布新评论时向该节点的作者发送电子邮件。问题是我没有获得带有规则的作者的电子邮件地址,因为数据集仅给我以下值:@ node.node_route_context:node或comment,但是在comment下我找不到诸如comment:node:author之类的东西。在Drupal 7中,我有此数据。我在Drupal 8中需要做什么?
Answers:
更新的答案
在全新安装的带有规则的Drupal 8(Alpha 2)上进行测试时,我遇到了一个错误,阻止了对此的成功测试,而下面的数据选择器是正确的,我目前无法重现工作规则。
该错误报告在这里:https : //www.drupal.org/node/2770291-总结此问题,Rules期望TO:参数为数组,并且在传递电子邮件地址令牌时将引发错误,该令牌下面将返回一个串。
我的最初答案适用于Drupal 7,但是对于Drupal 8,情况似乎更简单,并且取决于尚未得到充分记录的单个事实。
在D7中,我们熟悉类似于以下语法: comment:node:author:mail
在D8中,相同的选择器(有效)是: comment.entity_id.entity.uid.entity.mail.value
希望这会有所帮助,如果有其他帮助,我将在下面保留上一个答案。
上一个答案
*通常,对于使用字段值的规则,规则必须首先专门检查该字段的存在(即,该字段在规则正在运行的上下文中具有值)。如果您尚未尝试过此操作,则可能要尝试在规则中添加“实体具有字段”条件,以检查电子邮件地址是否存在。然后,这应该公开该字段的令牌。
使用实体关系执行规则时,我遇到过类似的问题(这或多或少是通过从节点引用作者来完成的)检查字段是否存在(在您的情况下,很可能是检查实体是否具有作者(应打开对用户对象的访问权限),然后检查该用户对象以确保它具有电子邮件地址),打开了引用实体的可用字段标记。*
2016年11月发布的“规则”发布队列中有一个有效的示例,因此至少从那时起就可以实现。参见https://www.drupal.org/project/rules/issues/2828422
这是该答案的稍作修改的版本。您可以将其导入您的站点并在UI中查看它,以了解如何配置此功能。
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