Drupal 7规则 - 关于cron,检查日期字段以及过去设置字段[状态]是否从“活动”到“结束”

时间:2013-10-03 23:13:23

标签: datetime drupal drupal-7 drupal-rules

好的......首先让我说我知道这里有一个类似的帖子(How to create a Drupal rule to check (on cron) a date field and if passed set field "status" to "ended"?),但该帖子的答案不起作用。步骤4(在组件中添加条件'数据比较'并选择节点:类型)不起作用或甚至作为选项存在。

我需要做的是:

On Cron>如果内容类型为event且结束日期已超过当前日期,则将status字段从Active更改为Ended。 (选择清单)

我能够通过使用事件: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

2 个答案:

答案 0 :(得分:1)

要使用除节点之外的其他模块创建的任何自定义字段或字段,您必须添加条件" entity has field"你的规则将使该领域成为可见的#34;并可供以后的工作

旁注:我认为你可以在没有php_eval的情况下进行日期比较,只需添加另一个实体就有字段条件并创建"数据比较"条件。应该有可用于您需求的令牌

答案 1 :(得分:0)

我不确定我是否完全理解这个问题:规则可以由cron触发。

当cron执行时,通过选择规则的“React on event”属性为“System> Cron维护任务执行”,你应该能够运行它。

我错过了什么吗?