Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Xelen

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 , то информация двоится.

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

Надіслати
Поділитися на інших сайтах

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

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

Надіслати
Поділитися на інших сайтах


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  из цикла? Она у меня не срабатывает вне цикла.

 

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

Надіслати
Поділитися на інших сайтах

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

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

 

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

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

Надіслати
Поділитися на інших сайтах

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
Надіслати
Поділитися на інших сайтах

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

 

 

 

Спасибо!

Надіслати
Поділитися на інших сайтах

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

 

Спасибо!

пожалуйста.

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

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

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

Надіслати
Поділитися на інших сайтах

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

пожалуйста.

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

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

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

 

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

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

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.