Есть тип товара со своими полями. Есть термин таксономии со своими полями. Нужно чтобы при обновлении термина правило смотрело у определенных товаров конкретное поле и если оно пустое то брать значение из аналогичного поля в термине.
Мое решение
Создаю событие После обновления существующего термина
Дальше добавляю Сущность имеет поле и указываю там поле из термина.
А дальше ступор. Как туда добавить поле из товара коммерца? Если делать аналогично через Сущность имеет поле то в селекторе нет сущности товара... Уже неделю ищу инфу по этому поводу, но так и не нашел(
Если брать событие связанное с комерцем типа "расчета цены" то появляется сущность товара. Но используя одновременно оба события из селектора исчезают обе сущности. Да и чтобы мое правило срабатывало при каждом расчете цены мне не надо.
Комментарии
в селекторе нет продукта, потому что событие предоставляет только термин.
Вам нужно вы actions загрузить товары (возможно, нужно использовать https://drupal.org/project/views_rules).
Потом нужно создать компонент типа Rule. В качестве параметра выберете commerce product, далее можно задать condition и action. Condition - Сущность имеет поле. Далее добавляете нужные action. После этого в основном правиле добавляете loop (вам же нужно по нескольким товарам пройтись), в loop добавляете action, в селекторе внизу будет список компонент, выберете тот, что создали.
Возможно вы подскажите как лучше это сделать?)
У меня следующая ситуация:
Есть товары с полями свойств одно из них картинка для товара.
Есть Тип материала Дисплей товара для вывода этого товара пользователю. В самом материале есть поле куда записывается термин для группировки товаров и последующего вывода в представлениях.
Есть словарь с терминами у терминов есть поле картинки на группу товаров.
Моя задача
При обновлении термина все товары, у которых в типах материала есть этот термин, обновляют поле картинки если оно пустое на значение из поля термина если оно не пустое.
С условиями пустое/не пустое я знаю как разобраться, вот как получить группу записей не очень представляю. Первое что приходит в голову это получить все материалы (action: fetch entity by property) типа "Дисплей товара", у которых в поле для термина стоит термин, который обновился. Далее для каждой записи вытащить связь с товаром и проверить поле картинки, и выполнить действие обновления поля картинки если нужно.
То есть вижу логику и алгоритм, но не знаю как его реализовать. Или есть вариант попроще?
P.S. С упомянутым Вами модулем раньше не встречался.
Ставите этот модуль. Он позволит загружать view в rule.
Тут http://www.drupal.ru/node/100854 я уже описывал, как загрузить view в rule, используя контекстный фильтр по терминам, и создать цикл по view. В Вашем случае view немного усложниться, вам нужно еще и добавить relation для загрузки товара, привязанного к дисплею. В view в список полей добавьте product_id. В rule в цикле загружайте продукт и обновляйте поле
Прочитал указанную вами тему. Не могу найти место где нужно сделать это:
То есть про содержимое понятно. Данный пункт нужно выбрать при создании самого представления. Вот где потом выбрать display "Rules"? И на сколько я понял именно эта настройка дает возможность выбрать конкретное представление в правиле? Потому что у мня уже есть созданные представления, но их нет в выпадающем списке при добавлении Views iterator display. Перерыл все настройки представления так и не нашел ни чего похожего. Искал как при создании нового представления так и в уже созданных.
Пример настроек представления:
Сам модуль views rules установлен и включен.
Еще вопрос:
и появится после того как я выберу представление в Views iterator display?5й комментарий
Нажимаете "Добавить", там в списке что то подобное будет (на знаю, как оно пишется в русифицированном друпале).
да
появятся в средней колонку настроек view после того, как создадите display "Rules"
Ок, все добавилось все выводится в привью представления как надо, в том числе id товара. Создал loop добавил туда action получить сущность по id, выбрал коммерц-товар. Дальше указал в идентификаторе через селектор данных имя переменной с id товара. Опять ступор, что дальше делать не понимаю. Мне нужно посмотреть значение поля с картинкой в товаре. Но это можно сделать только в условиях. А условие не видит того что мы получили в action.
Мне нужно посмотреть значение поля с картинкой в товаре. Имеется в виду то, что нужно проверить что там записано. Стандартная картинка noimg.jpg или индивидуальная.
admin/config/workflow/rules/components тут добавляете компонент, выбираете плагин Rule, задаете входной параметр типа нода. Если нужен выходной параметр, тоже не забудьте добавить. Дальше есть возможность добавить условие - проверку существует поле или нет, затем нужный action. Потом в основном правиле добавляете action, внизу списка будет созданный компонент