Помогите правильно собрать Rules для двух типов материалов связаных между собой по Entity reference

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

Аватар пользователя iNFerNo iNFerNo 16 мая 2013 в 10:12

Необходимо после сохранения ноды типа_материала_1 при выставленном значение поля_1, добавить значение в поле_2 типа_материал_2 связанного с типом_материала_1 по связи entity reference.

Я выбираю

Event
Before saving content

в Conditions

задаю условия
- тип_материала_1
- Entity has field (где выбираю связь entity reference и в нем поле_1)

и дальше затык

как задать в действие правило что бы выставить значение нужно в поле_2 связанной с ней нодой типа материала 2.

Комментарии

Аватар пользователя iNFerNo iNFerNo 16 мая 2013 в 11:21

Теперь стоит задача. Обратная. Сижу парюсь - не выходит.

Теперь при сохранение ноды типа_2 если поле_2 не имеет значения, у всех связанных нод типа_1 с этой нодой (типа_2) по связи entity refernce изменить значение поле_1.

Что там нужно в экшенах прописывать?

Аватар пользователя iNFerNo iNFerNo 16 мая 2013 в 12:20

Опишу решение дабы может быт кто-то подскажет обратное решение.

Имеем:
ноду Тип_1, ноду Тип_2
ноды этих типов имеют Поле_1
нода Тип_2 связана с нода Тип_1 по связи entity reference (Поле_2)

Задача:
После сохранения ноды Типа 2 со значением Поля_1 равным НЕОБХОДИМОЕ ЗНАЧЕНИЮ, изменить в связанной с ней ноде Типа_1(связь entity reference - Поле_2) значение Поля_1 на НЕОБХОДИМОЕ ЗНАЧЕНИЕ.

Решил так:

Создал правило - После сохранения контента.
в условия добавил нода Типа_2, у которой Поле_1 имеет НЕОБХОДИМОЕ ЗНАЧЕНИЕ
а в действие добавил компонент Rule Set в котром указал параметр: Поле_2 (связь между нодами по entity reference)

Rule для компоненты Rule set имеет следующее:
в условиях - ноды Типа_1
в действиях - Set a data value, где задал Поле_1 с НЕОБХОДИМЫМ ЗНАЧЕНИЕМ.

И все работает как надо.

ТЕПЕРЬ СТОИТ ЗАДАЧА: при изменение значения Поля_1 в ноде Типа_1 на НЕОБХОДИМОЕ, изменять у ВСЕХ НОД связанных с этой нодой Типа_1 значение Поля_1 на НЕОБХОДИМОЕ.

За 3 часа ничего не получилось.

Аватар пользователя aa2007 aa2007 16 мая 2013 в 12:52

Надо притянуть связанные ноды через Fetch Entity и далее через Loop проводить необходимые манипуляции с притянутыми сущностями.

Аватар пользователя aa2007 aa2007 16 мая 2013 в 15:28

"iNFerNo" wrote:
т.е. я просто в экшенах добавляю Fetch Entity : nid

не уверен что nid, т.к надо будет явно указать откуда этот nid брать. Возможно Fetch by property больше подойдет. Надо будет потыкать и найти подходящий вариант. Этот экшен вернет список результатов, который надо будет указать в качестве источника при создании loop. Далее ВНУТРИ loop создаем экшен и смотрим какими данными из этого списка можем манипулировать. Если нужного поля нет, а есть только стандартные (типо тайтл, имя автора и т.д.), то тут уже надо создавать отдельно компонент и в качестве входящих данных брать элементы этого списка и с кондишенс проверять наличие нужного поля и экшене этого компонента проводить необходимые вам манипуляции.