Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


Xelen
 Поделиться

Рекомендованные сообщения

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

 

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

 

Добавляю такой код в 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С.

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.