【问题标题】:Drupal 7 Rules - on cron, check date field and if past set field [Status] from “active” to “ended”Drupal 7 规则 - 在 cron 上,检查日期字段,如果过去设置字段 [状态] 从“活动”到“结束”
【发布时间】:2013-10-03 23:13:23
【问题描述】:

好的...首先让我说我知道这里有一个类似的帖子 (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 更改为 Ended。 (选择列表)

我可以通过使用 Event: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

【问题讨论】:

    标签: datetime drupal drupal-7 drupal-rules


    【解决方案1】:

    要使用由节点以外的其他模块创建的任何自定义字段或字段,您必须在规则中添加条件“实体具有字段”,这将使该字段“可见”并且可供以后的工作访问

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

    【讨论】:

      【解决方案2】:

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

      您应该能够通过将规则的“React on event”属性选择为“System > Cron maintenance tasks are executed”来在 cron 执行时运行它。

      我错过了什么吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多