Rules изменить поле по условию истекшей даты автоматом

Аватар пользователя lexa174 lexa174 24 октября 2016 в 23:56

Приветствую всех!

Никак не могу разобраться как сделать одну фишку.

Есть некий набор из 14 нод, которые нужно непрерывно привязать к дате.

То есть, к примеру, сегодняшний день - первый. Завтра - второй и так далее до четырнадцатого. Есть поле для даты, где мы задаем начальные позиции.
Задаем "первый день" - "25.10.2016"
"второй день" - "26.10.2016"
...
"четырнадцатый день" - "7.11.2016"

Так вот, задача стоит так, чтобы эту дату менять на +14 дней после устаревания, то есть ноды должны идти непрерывным циклом. Например, когда настанет завтрашний день 25.10 мы должны через тот же рулез определить что дата истекла на ноде "первый день" и увеличить эту дату на 14, поставив в конец этого списка на 8.11.2016

0 Thanks

Комментарии

Аватар пользователя bumble bumble 25 октября 2016 в 0:35
1

Можете создать правило запускаемое, например, кроном, или вручную дергать...

В правиле циклом проходитесь по списку нод и проверяете.

Можно в компонент вынести, можно установить условные правила). Суть в том чтоб проверить дату и при истине выполнить действие.
Проверку (condition) добавляете "Сравнение данных", в нем добираетесь до поля с датой, см. скрин:
Rules date condition
Потом, соответственно, добавляете 14 дней, если условие выполнено.

Аватар пользователя lexa174 lexa174 2 ноября 2016 в 18:37

Огромное спасибо за совет, попробовал воплотить, но возникла проблема - у меня нет в селекторе этого поля, пытаюсь разобраться почему...

У меня выбор только из site:

Не могу понять логику работы этого модуля как ему подсунуть нужное. Пытаюсь поставить условие по типу материала - тоже не выходит.

Я так понимаю, что модулю нечего анализировать, current-page для него ничего не значит, ведь на вход ничего не подано. В общем запутался я с этим модулем...

Аватар пользователя bumble bumble 2 ноября 2016 в 18:46
1
lexa174 wrote:

У меня выбор только из site:

Если Вы редактируете компонент правил, а не правило (с реакцией на событие), Вам нужно добавить параметр ноды в настройках компонента, например:

  • Тип данных: Материал
  • Метка: Node
  • Машинное имя: node
  • Использование: Параметр

После, в селекторе выбора будет доступен параметр ноды. Также, его (параметр ноды) нужно будет передавать при обращении к компоненту.

Аватар пользователя lexa174 lexa174 2 ноября 2016 в 19:00

Я правило пытаюсь создать с запуском по крону

Какой-то замкнутый круг получается.

Пытаюсь создать условие с проверкой типа материала или "сущность имеет поле" - тоже не выходит, выводит ошибку что неприменимо

Что надо заполнить в первую очередь? Условие? Так не получается, потому как не определено что именно мы обрабатываем, я так думаю это хочет мне сказать модуль.

Аватар пользователя bumble bumble 2 ноября 2016 в 19:09
1

Для того чтоб обращаться к сущности (в данном случае к ноде), её сначала нужно загрузить.

При выполнении правила по крону - самому правилу не доступны ноды. Вы можете, например создать список нод, и, опять же, циклом пройтись по ним. Или загрузить одну ноду по NID (в действиях пункты "Извлечь сущность по ID/свойству"), и с ней произвести все действия.

Тут опять же - или создавать компонент с параметрами ноды, в нем настраивать все необходимые действия и вызывать этот компонент из правила отрабатывающего на крон с передачей параметров, или Rules conditional и в действиях относящихся к условному действию.

Аватар пользователя lexa174 lexa174 2 ноября 2016 в 19:32

Хороший мануал, но и тут засада :(
У меня нет в выборе типа данных "материал"

Аватар пользователя bumble bumble 2 ноября 2016 в 19:48
1
lexa174 wrote:

Хороший мануал, но и тут засада :(
У меня нет в выборе типа данных "материал"

Не правда! Смотрите ниже:
node

Аватар пользователя lexa174 lexa174 3 ноября 2016 в 0:58

Ага... вроде часть всё же вышло

Сделал через VBO выборку, выбираются только просроченные ноды. Цикл создал

В VBO воткнул еще вывод нужного поля, теперь он в выборе появился.

Вопрос как к этим данным прибавить 14 дней и сохранить. Через переменную?

Аватар пользователя bumble bumble 3 ноября 2016 в 1:17
1

Действие "Вычислить значение" (или аналоги):
action
После выбора поля даты в качестве источника необходимо нажать "Перезагрузить форму" внизу правила, для изменения формата данных.

Аватар пользователя bumble bumble 3 ноября 2016 в 1:19
1

После, в селекторе данных (и в токенах) появится возможность выбрать результат. Его нужно установить в качестве значения поля даты - действие "Установить значение" (или аналог).

Аватар пользователя lexa174 lexa174 3 ноября 2016 в 1:59

Ух! Огромное спасибо, наконец-то заработало!
Ох и навертели в этом модуле

Аватар пользователя bumble bumble 3 ноября 2016 в 2:04
1
lexa174 wrote:

Ох и навертели в этом модуле

На самом деле - модуль весьма и весьма прост.
Главное вникнуть в него - и сможете без проблем "творить чудеса", без единой строки кода.

И даже если позже захотите научится программировать - у Вас уже будут познания логики (как все работает), т.к. Rules это, по сути, GUI для всяческих программных штукенций.