Научите пользоваться Rules.
Есть задача изменить дату создания материала, по полю даты в самом материале.
По факту есть тип материала "Событие", в котором можно задать дату начала и дату окончания. Хочу что бы дата создания самого материала была рядом с датой начала.
Сделал правило:
"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, но без допиливания хуками, кодом и т.п.
Комментарии
Блин. Извиняюсь. Активировал модуль и создал правила на внешнем хостинге,а экспериментировал на внутреннем. Собрав в одном месте - всё заработало.
"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 }
}
}
}
]
}
}
И чуть подправил правило. Не только после сохранения, но и при редактировании изменяется дата
Мои пять копеек в этот пост.
Моя задача: в типе материала есть поле "Дата замены масла".
Надо: если дата создания ноды больше чем "Дата замены масла", то дата создания принимает значение "Дата замены масла". Т.е. Создаю ноду 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
Жму сохранить
Всё.