Не Присваивается Переменная Smarty Через Pre Шаблон К Хуку

Ребят, снова нужна помощь. Не пойму что делаю неправильно или чего не догоняю.

Предисловие:

Коротко, в стандартно созданной доставке "Обсудить с менеджером" нужно переименовать "Бесплатная доставка" на другой текст или совсем убрать.

Нашел хук {hook name="checkout:shipping_method"} в templates/views/checkout/components/shipping_rates.tpl

для проверки перед самим хуком добавил нужный код. Если айди этой доставки такойто, переименовываем цену ($rate) на нужный текст.

{if $shipping.shipping_id == 6}
{$rate = "Стоимость доставки обговаривается"}
{/if}

Все сработало!

Проблема:

Когда этот код перенес в свой модуль, со вставкой перед этим хуком шаблона с суфиксом pre. Он не стал работать.

Проверял. И между условием и в этом шаблоне к хуку, прописывал тестовые тексты. Все работает. А вот переменную $rate нифига не меняет. Хоть тресни.

Через assign тоже пробовал. Ничего.

Что не так?

Область видимости для это переменной только данный шаблон

Попробуйте

{assign var="rate" value="Стоимость доставки обговаривается" scope="parent"}

Область видимости для это переменной только данный шаблон

Попробуйте

{assign var="rate" value="Стоимость доставки обговаривается" scope="parent"}

Спасибо огромное! Я уже думал этого в smarty нет...

Пытаюсь вставить код на то же место, но не срабатывает. Работает ли он с новым Checkout?

А нельзя просто языковую переменную изменить? Через “Администрирование” - “Языки” - “Переводы”

Скорее всего, в новом чекауте шаблоны перезаписывают стандартные шаблоны

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

@myway, вы хотите убрать слово “Бесплатно” в “Обсудить с менеджером” в новом чекауте?

Если так, то способ такой.
В responsive/templates/addons/lite_checkout/components/shipping_rates.tpl замените строку

<p class="shipping-method__title">{$shipping.shipping} — {$rate nofilter}</p>

на

<p class="shipping-method__title">{$shipping.shipping}{if $shipping.shipping_id !== "id_номер_доставки"} — {$rate nofilter}{/if}</p>

Вместо “id_номер_доставки” – число, которое можно узнать в ссылке на странице редактирования доставки:

В итоге, для этого способа не будет отображаться слово “Бесплатно”:

2 лайка

У меня почему-то нет этой строки(

@myway, вы ищите через поиск браузера, который не ищет по коду на странице.
Сначала кликните в любом месте кода, затем нажмите CTRL + F и в появившемся окне уже ищите.

Нужное место на 76 строке.

1 лайк

Да, всё получилось. А возможно задать эту функцию для нескольких способов доставки? Куда можно добавить id другого вида?

Вместо {if $shipping.shipping_id !== "id_номер_доставки"} вот так:

{if $shipping.shipping_id !== "id_доставки_1" && $shipping.shipping_id !== "id_доставки_2"}

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

1 лайк

Получилось именно так, как хотел. Спасибо!

1 лайк