Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Помогите с твигом)


Xelen
 Share

Recommended Posts

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

 

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

 

Добавляю такой код в catalog/view/theme/default/template/mail/order_add.twig, но что-то не срабатывает.

 

{% for product in products %}
{% if 'Text' or 'text' in product.name %}
{% set war_ok = 'ok' %}
{% endif %}
{% endfor %}
 потом где-то ниже вывожу

{% if war_ok == 'ok' %}
	<div class="warranty">{{ text_warranty }}</div>
{% endif %}

 

в чем моя ошибка?

 

Я уже понимаю, что нижний блок надо внутрь цикла ставить, но тогда {{ text_warranty }} вообще всегда приходит, независимо от того есть эти слова в названиях товаров или нет.

 

 

Вроде так что-то работает

{% for product in products %}
{% if 'Text' in product.name %}
<div class="warranty">{{ text_warranty }}</div>
{% endif %}
{% if 'text' in product.name %}
<div class="warranty">{{ text_warranty }}</div>
{% endif %}
{% endfor %}

 

Но, если в корзине и Text  и text , то информация двоится.

Как сделать, чтобы она выводилась один раз, если в  корзине есть один из товаров или оба?

Link to comment
Share on other sites

{% if (a == 'foo') or (b == 'bar') %}
    ...
{% endif %}

Взагалі така обробка має бути в контролерах десь, можливо у вашому випадку є сенс розпізнавати потрібні товари не по назві (ненадійно) а використати існуюче вільне поле, а ще краще створити своє.

Link to comment
Share on other sites


15.09.2022 в 10:52, drOC сказал:

спробуйте так

{% if 'Text' in product.name or 'text' in product.name %}

 

да, эта логика срабатывает, но что делать с двоением текста в письме?

 

{% for product in products %}
{% if 'Text' in product.name or 'text' in product.name %}
{% set war_ok = 'ok' %}
{% endif %}
{% if war_ok == 'ok' %}
	<div class="warranty">Текст письма</div>
{% endif %}
{% endfor %} 

 

Вот тут, если кладешь два разных товара со словом text  в названии / или два разных товара text и Text -->

 

"Текст письма" приходит два раза подряд

 

возможно как-то вытащить переменную war_ok  из цикла? Она у меня не срабатывает вне цикла.

 

или это только через контроллер делать?

Link to comment
Share on other sites

15.09.2022 в 02:14, clarionio сказал:
{% if (a == 'foo') or (b == 'bar') %}
    ...
{% endif %}

Взагалі така обробка має бути в контролерах десь, можливо у вашому випадку є сенс розпізнавати потрібні товари не по назві (ненадійно) а використати існуюче вільне поле, а ще краще створити своє.

 

В идеале да, вообще товары отбираются по Атрибуту (через HYPER Product Models  модуль), хорошо бы было выводить в корзину сам атрибут и еще в письме по нему делать условие.

Но это гораздо сложнее кажется.

Link to comment
Share on other sites

15.09.2022 в 13:05, Xelen сказал:

Вот тут, если кладешь два разных товара со словом text  в названии / или два разных товара text и Text -->

 

"Текст письма" приходит два раза подряд

 

возможно как-то вытащить переменную war_ok  из цикла? Она у меня не срабатывает вне цикла.

 

вот

{% set war_ok = '' %}
{% set search_text = 'text' %}
{% for product in products %}
	{% set prod_name = product.name %}
	{% if search_text in prod_name|lower %}
		{% set war_ok = 'ok' %}
	{% endif %}
{% endfor %}

{% if war_ok %}
	<div class="warranty">Текст письма</div>
{% endif %}

 

 

  • +1 2
Link to comment
Share on other sites

15.09.2022 в 14:56, vier сказал:

 

вот

{% set war_ok = '' %}
{% set search_text = 'text' %}
{% for product in products %}
	{% set prod_name = product.name %}
	{% if search_text in prod_name|lower %}
		{% set war_ok = 'ok' %}
	{% endif %}
{% endfor %}

{% if war_ok %}
	<div class="warranty">Текст письма</div>
{% endif %}

 

 

 

Спасибо!

Link to comment
Share on other sites

15.09.2022 в 16:42, Xelen сказал:

 

Спасибо!

пожалуйста.

так же возможно лучше Вам сделать эту обработку в контроллере данной страницы, а в twig уже выводить готовую переменную.

сам Искомый текст возможно записать в Языковые файлы (особенно если сайт мульти-язычный). - так же, если нужно использовать несколько вариантов для сравнения, то возможно задать НЕ Строкой, а Массивом.

в общем вариантов много для автоматизации и достижения поставленной цели )

Link to comment
Share on other sites

15.09.2022 в 16:58, vier сказал:

пожалуйста.

так же возможно лучше Вам сделать эту обработку в контроллере данной страницы, а в twig уже выводить готовую переменную.

сам Искомый текст возможно записать в Языковые файлы (особенно если сайт мульти-язычный). - так же, если нужно использовать несколько вариантов для сравнения, то возможно задать НЕ Строкой, а Массивом.

в общем вариантов много для автоматизации и достижения поставленной цели )

 

Чуток еще автоматизировала, теперь еще надежнее.

Нашла отличное решение вывода значений атрибутов в значения опций, теперь они видны в корзине/чекауте и письме.

В ваш код добавила цикл опций, и сейчас ищет по значению атрибута, работает, как часы, так как значения атрибутов не вписываются вручную,  они просто галочки в 1С.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.