Правила Drupal 7 - в cron проверьте поле даты и, если прошло, установите поле [Статус] с «активно» на «завершено»

Хорошо... позвольте мне начать с того, что я знаю, что здесь есть похожий пост (Как создать правило Drupal для проверки (в cron) поля даты и, если передано, установить статус поля на завершенное?), но ответ на этот вопрос пост не работает. Шаг 4 (в компоненте добавьте условие «Сравнение данных» и выберите узел: тип) не работает или даже существует как вариант.

Что мне нужно сделать, так это:

В 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


person Cybercampbell    schedule 03.10.2013    source источник


Ответы (2)


чтобы использовать любые настраиваемые поля или поля, созданные другими модулями, кроме узла, вы должны добавить условие «объект имеет поле» в свои правила, что сделает это поле «видимым» и доступным для дальнейшей работы.

примечание: я думаю, вы можете выполнить сравнение дат без php_eval, просто добавьте еще один объект с условием поля и создайте условие «сравнения данных». Должны быть доступны токены для ваших нужд

person Tomáš Tibenský    schedule 10.10.2013

Не уверен, что полностью понимаю вопрос: правила могут запускаться cron.

Вы должны иметь возможность запустить его, когда cron выполняется, выбрав атрибут «Реакция на событие» правила для «Система> Выполнение задач обслуживания Cron».

Я что-то упускаю?

person Alberto    schedule 09.10.2013