Есть два шаблона checkout.confirmation.html и my.order.html. В шаблонах есть вывод списка товаров в уже сделанном заказе и в заказе, который в процессе подтверждения. В одном и в другом шаблонах добавлены конструкции вида.
{foreach $items as $item}
{$product = $wa->shop->product($item.product_id)}
<a href="{$wa->shop->productUrl($product)}" class="item-photo">
{$wa->shop->productImgHtml($product, '48x48', ['default' => "`$wa_theme_url`img/dummy48.png", 'alt' => "", 'title' => "Перейти к товару `$item.name|escape`"])}
</a>
<b>{$item.name}</b> (добавление escape в этой строке вообще не влияет ни на что)
и
{foreach $order.items as $item}
{$product = $wa->shop->product($item.product_id)}
<a href="{$wa->shop->productUrl($product)}" class="item-photo">
{$wa->shop->productImgHtml($product, '48x48', ['default' => "`$wa_theme_url`img/dummy48.png", 'alt' => "", 'title' => "Перейти к товару `$item.name`"])}
</a>
<b>{$item.name}</b>
В названии товара используются кавычки типа Товар "Супер-товар" универсальный 0,75л.
Суть проблемы в следующем. В $item.name при формировании title в одном случае нужно использовать |escape и без него никак вообще ибо разрывается и ломается title на куски по кавычкам и пробелам, а в другом категорически нельзя, т.к. с ним кавычка преобразуется на " и это некрасиво вылезает.
При этом в названии товара в checkout.confirmation.html влияние escape вообще нет. Хоть он есть, хоть нет, всё едино правильно выводится.
<b>{$item.name}</b>
В случае my.order.html добавление escape вытаскивает кавычку в виде " и этот модификатор там использовать нельзя.
Вопрос в следующем. Почему при практически одинаковых действиях с получением данных приходится приспосабливаться и "танцевать" в теме дизайна, используя разные методы, несмотря на практически полную индентичность кода и методов?
0 комментариев