好的...首先让我说我知道这里有一个类似的帖子(How to create a Drupal rule to check (on cron) a date field and if passed set field "status" to "ended"?)但是那个帖子的答案不起作用。第 4 步(在组件中添加条件“数据比较”并选择节点:类型)不起作用,甚至作为选项存在。
我需要做的是:
在 Cron 上 > 如果内容类型是 event
并且结束日期已超过当前日期,则将 status
字段从 Active
更改为 结束
。 (选择列表)
我能够通过使用事件来做到这一点:Content is viewed
但我真的需要在 cron 运行时工作。
旁注:在我的当前版本中(查看内容)它确实将 Active
更改为 Ended
但由于某种原因它也删除了节点的标题很奇怪,因为 Drupal 要求提交标题...知道发生了什么事吗?
不确定是否有帮助,但这是我自己所做的导出:
{ "rules_event_status" : {
"LABEL" : "Event Status",
"PLUGIN" : "reaction rule",
"ACTIVE" : false,
"REQUIRES" : [ "rules", "php" ],
"ON" : [ "node_view" ],
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "event" : "event" } } } },
{ "AND" : [] },
{ "php_eval" : { "code" : "\/\/dpm(strtotime($node-\u003Efield_event_date_time[LANGUAGE_NONE][0][\u0027value2\u0027]));\r\nif (time() \u003E strtotime($node-\u003Efield_event_date_time[LANGUAGE_NONE][0][\u0027value2\u0027]))\r\n{\r\n return true;\r\n}" } }
],
"DO" : [
{ "data_set" : { "data" : [ "node:field-event-status" ], "value" : "Ended" } }
]
}
}
非常感谢任何帮助。
谢谢
C
最佳答案
要使用任何自定义字段或由节点以外的其他模块创建的字段,您必须将条件“实体有字段”添加到您的规则中,这将使该字段“可见”并且可以在以后的工作中访问
旁注:我认为您可以在没有 php_eval 的情况下进行日期比较,只需添加另一个具有字段条件的实体并创建“数据比较”条件。应该有满足您需求的代币
关于datetime - Drupal 7 规则 - 在 cron 上,检查日期字段,如果过去设置字段 [状态] 从 “active” 到 “ended”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19170668/