Автоматическое удаление коллекции полей из ноды

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

Аватар пользователя _viktor_ _viktor_ 14 ноября 2017 в 18:44

Друзья подскажите пожалуйста как реализовать автоматическое удаление коллекции полей из ноды в зависимости от другого поля например "дата". Или как автоматически менять выбор из поля типа "список" в зависимости от того же поля "дата".
Есть модуль scheduler, но он снимает всю ноду с публикации, а мне нужна работа с полями.

Лучший ответ

Аватар пользователя _viktor_ _viktor_ 27 ноября 2018 в 22:47

Я решил этот вопрос в другом проекте. Решил не методом удаления, а методом фильтрации. Спасибо ХулиGUN за наводку. Хочу поделиться этим решением.
1. Нужен модуль Date и Field collection
2. В модуле Date дополнительно включил Date Views
3. В типе материала создал поле типа "Коллекция полей" с множественным добавлением.
4. В созданной коллекции полей добавил нужные поля и поле типа "Дата"
5. Создал Views в которой вывел поля из коллекции полей. Для вывода полей по отдельности из коллекции полей нужно создать связь во Views в разделе связи.
6. В качестве фильтрации:
а) тип материала
б) Дата: Дата (field_collection_item)
Filter any Views field_collection_item date field.
7. настройки фильтра "Дата" на криншоте.
Как происходит фильтрация. Если в поле "Дата" время больше текущего времени - 5 минут "now-5 minute", то эту коллекцию полей в материале показываем, если нет скрываем.

Комментарии

Аватар пользователя _viktor_ _viktor_ 15 ноября 2017 в 7:05

Есть коллекция полей. В ноде их может быть любое количество. Мне нужно чтобы каждое количество полей удалялось из ноды автоматически по расписанию. На мой взгляд есть два решения этой задачи.
1. в наборе полей создать поле типа дата и по наступлению события поля "дата" удалять эту коллекцию полей
2. тоже поле дата + чекбоксы ДА и НЕТ. по умолчанию НЕТ, а когда пришло событие из поле дата ставим ДА.
А потом во views фильтровать.
Я так понимаю, что в этой ситуации нет готового решения в виде модуля.
Надо разбираться с Rules.
Может кто сталкивался с подобной задачей или у кого в закладках есть ссылка на подобное решение. Буду очень признателен за помощь.

Аватар пользователя ХулиGUN ХулиGUN 15 ноября 2017 в 14:54
1

_viktor_ wrote:

Есть коллекция полей. В ноде их может быть любое количество. Мне нужно чтобы каждое количество полей удалялось из ноды автоматически по расписанию

Вангую изначально неправильную архитектуру. Поэтому и просил вначале описать суть задачи, почему именно так, а не что нужно сделать.
_viktor_ wrote:

тоже поле дата + чекбоксы ДА и НЕТ. по умолчанию НЕТ, а когда пришло событие из поле дата ставим ДА.

А потом во views фильтровать.

Rules, но не вижу смысла использовать ещё одно bool поле которое по сути равно field_date <= now()
На данный момент я вижу множественные ошибки в архитектуре проекта и поэтому советовать что-то конкретно не вижу смысла до подробного описания задачи. Зачем, например удалять поля, если их можно просто не показывать по тому же условию field_date <= now()?

Аватар пользователя _viktor_ _viktor_ 15 ноября 2017 в 16:38

Спасибо. now() это прямой запрос в MySQL, но как его правильно реализовать в проекте? Насколько я понимаю views напрямую работает с базами данных, можно ли такое условие задать через views?

Аватар пользователя ХулиGUN ХулиGUN 15 ноября 2017 в 18:02

_viktor_ wrote:

Спасибо. now() это прямой запрос в MySQL, но как его правильно реализовать в проекте? Насколько я понимаю views напрямую работает с базами данных, можно ли такое условие задать через views?

1

Аватар пользователя _viktor_ _viktor_ 27 ноября 2018 в 22:47

Я решил этот вопрос в другом проекте. Решил не методом удаления, а методом фильтрации. Спасибо ХулиGUN за наводку. Хочу поделиться этим решением.
1. Нужен модуль Date и Field collection
2. В модуле Date дополнительно включил Date Views
3. В типе материала создал поле типа "Коллекция полей" с множественным добавлением.
4. В созданной коллекции полей добавил нужные поля и поле типа "Дата"
5. Создал Views в которой вывел поля из коллекции полей. Для вывода полей по отдельности из коллекции полей нужно создать связь во Views в разделе связи.
6. В качестве фильтрации:
а) тип материала
б) Дата: Дата (field_collection_item)
Filter any Views field_collection_item date field.
7. настройки фильтра "Дата" на криншоте.
Как происходит фильтрация. Если в поле "Дата" время больше текущего времени - 5 минут "now-5 minute", то эту коллекцию полей в материале показываем, если нет скрываем.