我试图创建一个自定义规则(使用规则 ,使每一个cron的运行时间,这条规则在我创建了一个自定义的内容类型检查日期字段模块)。 如果该日期已过,然后我想一个列表部件设置为从active
到ended
。
这是多远我在尝试创建此规则时:
- 设置
React on event
以Cron maintenance tasks are performed
-
Add Condition
>设置Select the condition to add
,以Data comparison
>继续
这里是问题: Data selectors
只有site
和现场数据的访问权限。
任何想法,我要去哪里错了吗?
与“执行cron维护任务”规则条件的问题是,在这一点上,有一个节点对象没有访问权限,以便任何检查/节点上的操作是不可能的。 作为一种解决方案,而不是事件被执行的Cron =维护任务 ,使用事件=节点:内容被观看 。 你可以把它打开任何内容类型,这样,当有人访问该网站并打开至少一个页面,一些动作将被触发。
您需要先创建一个规则组件:
- 进入规则>组件 (管理/配置/工作流程/规则/组件)
- 然后创建一个从列表中选择一个新的组件,然后选择“规则”
- 此组件和下表中选择设置了一个名字:
- 数据类型: 文本令牌
- 标签: 你想要一个名字
- 机器名称: 标签使用相同的名称,但在这里只设置小写和下划线
- 用法: 参数
- 在组件添加条件“数据比较”,并选择节点:类型
- 添加所需的其他条件
- 设置所需的行动和保存
- 现在去规则 (管理/配置/工作流程/规则),并创建与cron维护行动的规则(如您已完成)
- 跳转条件的部分,并在行动:
- 新的行动: 添加一个变量
- 值: 文本
- 然后写要循环这一变量,就像内容类型的机器名的值(如果你愿意,你可以在部分更改低于这个变量的名称和机器名)
- 现在添加一个行动“由物业获取实体”
- 实体类型值: 节点
- 属性值: 类型
- 数据选择器: 在点8产生的可变
- 现在添加参数列表中循环使用提供的变量“获取地产实体”
- 在环路(点击链接到环行的右侧上)添加一个动作,然后在点2中创建的部件,并传递通过循环提供的可变
我声明:我不知道,如果它的工作原理,但至少它应该引导你走向正确的道路
对不起,我的英语,我希望你明白一切:)
是的,你应该能够得到这个使用工作规则模块来实现你要找的东西,但我建议你也结合起来,与该视图规则模块。 关于这个模块的一些细节(从它的项目页面):
可欣赏直接作为规则的行动和循环,以无缝地使用视图结果数据。
以前的报价似乎有点神秘(它可能会让你觉得像“还等什么,这怎么能帮助我吗?”)。 为此有关如何使用这些模块向前推进一些细节:
- 创建一个视图(使用次数 ),让你有1次结果(行)与所有要被处理的节点(与您的自定义内容类型,如果以某种方式使用日期字段可能的过滤器)。 而该视图具有字段(列)为任何需要在后续步骤中,例如节点ID,日期字段,以及可能的其他领域也是如此。 你以后会需要这些景观领域的价值由您的规则进行处理,“到一个列表控件设置从
active
到ended
*”(如你的问题)。 重要提示:使用“规则”的意见显示类型。 - 删除“添加条件”(你启动的自定义规则),相反,使用视图规则模块遍历每一个规则的行动,这些意见的结果,使用被称为“循环规则”规则的技术。
- 对于每一个迭代步骤规则中的循环,执行规则采取行动,“ 做你的事 ”(=设置列表控件从
active
到ended
)。 在这一点上你必须从可作为所谓的规则参数的查看结果每列的所有数据。 所以在这一点上它是一块蛋糕,以适应这个列表控件为你在一个循环处理节点的值。 - 另外,您可能还需要添加任何额外的规则条件(S),也到你自己的想象。 通常的东西你不能,或者还没有,表示为视图过滤器。 但是,如果你有使用视图过滤器和一个额外的规则条件之间进行选择,我推荐去的视图过滤器,因为这会降低你的规则循环的迭代次数(性能!)。
很简单,不是吗?
文章来源: How to create a Drupal rule to check (on cron) a date field and if passed set field “status” to “ended”?