Добрый день!
У ноды есть поле типа Список - "Устаревшее/Актуальное" (это про объявление пользователя). Через Правила хочу устанавливать галочку "Устаревшее".
- Идет проверка по времени "если объявление не обновлялось пользователем более 6 месяцев", после чего пользователю отправляется письмо с напоминанием "Обновите информацию в объявлении" + выставляется галочка "Устаревшее".
Проблема: У ноды при этом меняется дата обновления.
Задача: Не трогать дату обновления ноды.
Как правилах устанавливать поля для нод, не трогая дату обновления?
Спасибо!
Комментарии
емнип, никак.
Через рулз дергается node_save, поэтому дата обновления будет изменяться.
Только кастом, если нужно просто сменить значение поля.
А лучше логику поменять, т.к. это частая ошибка, когда пытаются строить функционал через changed/created.
а как вариант повесить свой скрипт на крон, который напрямую изменяет значение в БД?
ПС. да, писалось об этом выше про кастом
Ну то есть без программирования не обойтись?
Можно через дополнительное поле для хранения даты обновления пользователем.
- добавить собственное поле для хранения даты обновления пользователем
- при помощи модуля field_permissions установить запрет на отображение/изменение поля для пользователей с определенной ролью
- сделать рулс, который при создании и обновлении пользователями определенной роли будет сохранять в это поле значение ядреной даты обновления (создания) ноды
- во вьюсах переделать сортировку с системного значения даты обновления ноды на значение из собственного поля с датой обновления
Вобщем, все равно не работает как надо.

Это первое правило, которое заполняет Собственное поле "Обновлено new"
А это второе правило, которое выполняет целевую задачу - установить значение "Устаревшее", при этом не трогать дату в "Обновлено new".

Что происходит по факту:
Любой пользователь сайта кроме админа, заходит на ноду. Срабатывают оба правила, в итоге дата все равно обновляется. Тупик.
(правильно работает, только если админ заходит на ноду, но должно правильно работать на любого пользователя).
Что значит ядреной даты обновления?
На сколько я сейчас понял - мы скроем от пользователя системное поле "Дата обновления" и покажем созданное нами. Но по факту дата и в скрытом и во вновь созданном будет одна и та же. Или я что-то не понял?
От пользователя будет скрыто собственное поле для хранения даты обновления, чтобы он в нее не мог вручную что-то ввести. Системное поле итак недоступно для просмотра.
Дата создания/обновления в системном и собственном поле будут одинаковы тогда, когда пользователь будет создавать ноду или сам будет обновлять ее. Если ты как админ внесешь изменения, то рулс не обновит собственное поле. Чтобы так работало, в рулсе должен быть condition на проверку не обладания пользователем определенной ролью пользователя, например, ролью «administrator».
Я все равно не до конца понял, но попытаюсь воспроизвести))
Спасибо! Напишу, если не получится
Все сделал, но пока не срабатывает как нужно.
1) Создал Правило, которое проверяет, не админ ли юзер, обновивший материал https://yadi.sk/i/0DKzzFFndA9N5g
+ устанавливает Собственную дату обновления такой же как системная https://yadi.sk/i/xhtsTZJDqDdUSQ
2) Для Собственного поля Обновлено выставил разрешения https://yadi.sk/i/f196SUnX-vEa8w
3) Другое правило выполняя свою работу, все равно обновляет Собственную дату обновления материала.
+ При ручной проверке - я, как админ обновляю ноду, и у нее также меняется дата обновления в новом собственном поле.
В Conditions нужно использовать токен [site:current-user] вместо [node:author], так как проверка должна происходить для текущего авторизованного пользователя. А токен [node:author] хранит данные об авторе ноды.
Большое спасибо, получилось!
Столкнулся с тем, что для 99% имеющихся нод Собственное поле Обновлено - не заполнено. Оно получит значение только когда автор обновит его. А значит и сортировку по этому полю во views ставить бессмысленно.
Сделайте в кастомном модуле hook_update и заполните это поле из даты ноды, если оно пустое
Это уже слишком сложно, я не умею делать sql запросы
Во views сделай сортировку и по системному и по собственному полю.
Ноды без заполненного собственного поля будут сортироваться по системному Updated и будут опускаться. Обновленные пользователями ноды будут сортироваться по собственному Updated и будут подниматься.
Новое поле "Обновлено (new)" просто не появляется во view
Думаю, надо его сделать «indexed».
Можно подробнее, как это сделать?
Похоже у Вас вьюха построена по поисковому индексу. Чтобы нужное поле стало доступным вьюхе его нужно сначала добавить в этот индекс. Это где-то тут: /admin/config/search/search-api
Спасибо, получилось!
Вобщем, все равно не работает как надо.

Это первое правило, которое заполняет Собственное поле "Обновлено new"
А это второе правило, которое выполняет целевую задачу - установить значение "Устаревшее", при этом не трогать дату в "Обновлено new".

Что происходит по факту:
Любой пользователь сайта кроме админа, заходит на ноду. Срабатывают оба правила, в итоге дата все равно обновляется. Тупик.
(правильно работает, только если админ заходит на ноду, но должно правильно работать на любого пользователя).