Есть цикл в RetailCRM выдающий отображение для свойств товара — нужно чтобы выводило только если значение равно определенному, а не все
Настраиваю триггер в RetailCRM, там есть цикл
{% for of,od in product.properties %}
{% for key, val in od %}
{% if key == 'name' %}{{val}}:
{% endif %}
{% if key == 'value' %}{{val}}
{% endif %}{% endfor %}<br>
{% endfor %}</td>
этот цикл выводит все свойства name и value, которые есть, а мне нужно чтобы выводил только если name = "color".
Тогда выводит, если другим значениям, то не выводит.
Как правильно внести исправления?
Ответы (2 шт):
Попробуйте данный вариант:
{% for of,od in product.properties %}
{% for key, val in od %}
{% if val == 'color' %}
if {% key == 'name' %}
{{val}}:
{% endif %}
if {% key == 'value' %}
{{val}}
{% endif %}
{% endif %}
{% endfor %}<br>
{% endfor %}
Было бы неплохо, если более детальнее описали задачу)
Чтобы вывести свойства товаров, добавленные в заказе, используйте код
{% for prod in order.availableOrderProducts %}
{% for item in prod.properties %}
{{ item.code }} {{ item.name }} {{ item.value }}
{% endfor %}
{% endfor %}
Чтобы вывести свойства товаров, добавленные в каталоге —
{% for prod in order.availableOrderProducts %}
{% for item in prod.offer|offer_properties %}
{{ item.code }} {{ item.name }} {{ item.value }}
{% endfor %}
{% endfor %}
Как можете видеть, одни свойства выводятся через массив объекта внутри заказа, а другие через фильтр массива внутри каталога.
item — можете заменить на то, что вам нравится, по сути это именование переменной при обработке массива.
item.code — код формируется автоматически путем транслитерации
item.name — название свойства
item.value — значение свойства
Далее перебирайте нужные вам названия по фильтру if. Например такой пример выведет название и значение свойства товара указанные в каталоге (не в заказе), только если название свойства будет color, а имя свойства будет равно blue или red.
{% for prod in order.availableOrderProducts %}
{% for item in prod.offer|offer_properties %}
{% if item.name == 'color' and item.value in ['blue', 'red'] %}
{{ item.name }} {{ item.value }}
{% endif %}
{% endfor %}
{% endfor %}
Но в триггерах не работает Twig, этот код будет работать только в шаблонах (печатный формы, письма, смс). В триггерах используется Pipeline который работает иначе. Поэтому для более точного ответа стоит детальнее понять, вы пишете триггер или всё же шаблон?