如何使用“规则操作”更改字段值?


20

我正在尝试设置一个 可以更改字段值的“规则操作”。我创建了一个数据类型为Node的动作集。当我去创建一个规则动作时,我可以访问每个默认的Drupal节点字段,但是没有任何字段。

这根本不可能吗?我需要其他模块来完成这项工作吗?

Answers:


15

首先,您需要添加一个条件来检查该节点上是否存在该字段,然后该字段才可用于操作。有特定条件可以执行此操作。


1
同样,它必须是一个规则集,才能明显地访问条件。
Joren

6

使用“实体具有字段”(或“内容属于类型”)条件将使字段在操作“设置数据值”中进行数据选择时变为可用。


2

并不与先前的两个答案相矛盾,但是IMO都缺少(忽略了)问题的关键部分,即“ ...我创建了一个动作集... ”。的确,解决方案的一部分肯定是“ Entity has field”(如jcarballo的回答所示)。但是,通过设计“规则操作集”,您不能在其中包含任何“规则条件”。因此,需要以下任一项来完成此问题的答案:

考虑到上述情况,如果您还添加规则条件Entity has field(与您要为其设置值的字段相关),则应该能够为您的字段创建规则操作,例如“设置数据值” 。并确保Entity has field在其他“规则条件”之前添加该条件,您可能要在其中引用此字段(如果您的规则中有任何这样的条件)。

规则UI中也提到了这一点,例如,当您添加“数据比较”条件时:它某处显示“ 数据选择器可帮助您向下钻取可用于规则的数据。使实体字段出现在数据选择器中,则可能必须使用条件“实体具有字段”(或“内容属于类型”) ”。

有关说明此Entity has field情况重要性的视频教程,请参阅数据类型和数据选择,尤其是其中大约13:30和17:30之间显示的内容。


回复:据我了解,第二个选项,您只能操作而不是 规则集用作“视图批量操作(VBO)”中的可用操作。显然,这是因为View应该承担验证要处理的实体是否是用户想要的合法实体的负担(通过使用Views Filters [regular和/或Contextual]并通过仅选中所需实体的复选框)进行处理),因此不需要条件。但这有效地将钥匙放入了储钱罐中。因此,条件规则可能正是医生所订购的。
乔尔·MMCC,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.