Есть цикл в 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 шт):

Автор решения: Developer Vusal

Попробуйте данный вариант:

{% 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 %}

Было бы неплохо, если более детальнее описали задачу)

→ Ссылка
Автор решения: Alex Erm

Чтобы вывести свойства товаров, добавленные в заказе, используйте код

{% 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 который работает иначе. Поэтому для более точного ответа стоит детальнее понять, вы пишете триггер или всё же шаблон?

→ Ссылка