[Решено] Rules: Изменить дату создания матриала по другому полю даты.

Главные вкладки

Аватар пользователя vortex vortex 31 марта 2014 в 19:46

Научите пользоваться Rules.

Есть задача изменить дату создания материала, по полю даты в самом материале.
По факту есть тип материала "Событие", в котором можно задать дату начала и дату окончания. Хочу что бы дата создания самого материала была рядом с датой начала.

Сделал правило:

{ "rules_event_date" : {
    "LABEL" : "\u0414\u0430\u0442\u0430 \u0421\u043e\u0431\u044b\u0442\u0438\u044f",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "node_insert--event" : { "bundle" : "event" } },
    "DO" : [
      { "data_set" : {
          "data" : [ "node:created" ],
          "value" : {
            "select" : "node:field-date:value",
            "date_offset" : { "value" : -172800 }
          }
        }
      }
    ]
  }
}

Сделал EVENT После сохранения материала (пробовал и "до")
Состояние пропустил, т.к моя логика не увидла для данного правила в нём смысл (может тут и ошибка)
Действие: Установить в поле даты создания (node:created) значение поля "Начало события" (node:field-date:value). И задал оффсет в 2 дня.

Ну в общем оно не заработало...

Кроме решения данной проблемы приму в ответах ссылки на русскоязычные тьюториалы с различным применением rules, но без допиливания хуками, кодом и т.п.

Комментарии

Аватар пользователя vortex vortex 1 апреля 2014 в 11:58

Блин. Извиняюсь. Активировал модуль и создал правила на внешнем хостинге,а экспериментировал на внутреннем. Собрав в одном месте - всё заработало.

{ "rules_event_date" : {
    "LABEL" : "\u0414\u0430\u0442\u0430 \u0421\u043e\u0431\u044b\u0442\u0438\u044f",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : {
      "node_insert--event" : { "bundle" : "event" },
      "node_update--event" : { "bundle" : "event" }
    },
    "DO" : [
      { "data_set" : {
          "data" : [ "node:created" ],
          "value" : {
            "select" : "node:field-date:value",
            "date_offset" : { "value" : -172800 }
          }
        }
      }
    ]
  }
}

И чуть подправил правило. Не только после сохранения, но и при редактировании изменяется дата

Аватар пользователя Litos Litos 11 июня 2014 в 11:45

Мои пять копеек в этот пост.

Моя задача: в типе материала есть поле "Дата замены масла".
Надо: если дата создания ноды больше чем "Дата замены масла", то дата создания принимает значение "Дата замены масла". Т.е. Создаю ноду 6 июня, а поменял масло 1 июня. А мне надо, чтобы дата создания равнялась дате замены, так как я не вношу записи день-в-день.

Использую модуль Rules делаю так:
1. Создаю правило.
Даю имя - Date change oil
Выбираю реакцию на событие - После сохранения нового контента
И тип - Замена масла
Жму сохранить

2. Добавляю Conditions
Выбираю тип - date comparison
В поле "Data selector" ввожу - node:created
Жму Продолжить
Выбираю оператор "is greather than" (Это проверка, что если дата создания материала, больше чем дата замены масле, то дата создания примет значение замены масле)
В поле "Data selector" ввожу - node:field-date-change
Жму сохранить

3. Добавляю действие
Выбираю action - set a data value
В поле "Data selector" ввожу - node:created
Жму продолжить
Жму кнопку "Switch a data selector"
В поле "Data selector" ввожу - node:field-date-change
Жму сохранить

Всё.