Возможно ли использовать SMARTY в языковых переменных?

Хочу, чтобы на странице оформления заказа был разный текст кнопки “Оформить заказ” в зависимости от выбранного способа оплаты. Возможно ли использовать какую-нибудь конструкцию ЕСЛИ в тексте языковой переменной?

В языковых переменных можно использовать плейсхолдеры, а при вызове функции __ передавать первым элементом языковую переменную, вторым - массив плейсхолдер => значение. И вот тут значение вы можете передавать конструкцией
Условие ? Значение 1 : значение 2

Нельзя

Да, это я понимаю. Но не нашел никаких хуков в районе кнопки “Оформить заказ”, чтобы туда безболезненно вставить свой код. Думал, вдруг есть что-то подобное в самой переменной.

Попробую поиграться с хуками выше по коду страницы.

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

1 лайк

Да, кнопка в отдельном шаблоне:
/design/themes/responsive/templates/buttons/place_order.tpl

Не подскажите, как сделать его оверрайд через свой модуль? Я сделал в папке модуля файл /buttons/place_order.override.tpl, но что-то не работает.

в папке своего модкля надо сделать папку
overrides
то есть путь
overrides/buttons/place_order.tpl

1 лайк

работает
:pray:
век живи - век учись

Если кому-то тоже будет нужно, то кусок кода в этом шаблоне может быть таким:

    {$text = "Подтвердить заказ"}    
    {if $cart.payment_id == 1}
        {$text = "Подтвердить заказ и перейти к оплате"}
    {/if}
    {if $cart.payment_id == 2}
        {$text = "Подтвердить заказ и получить счет на оплату"}
    {/if}
    {if !$but_text}
        {$but_text = __("lite_checkout.place_an_order_for", ["[amount]" => $smarty.capture.order_total, "[text]" => $text])}
    {/if}

Языковая переменная lite_checkout.place_an_order_for имеет следующее значение:

[text]<br>([amount])
4 лайка