Наименование артикула в уведомлениях

В шпаргалке не нашел понятного примера вывода наименования артикула в уведомлениях.

Есть следующий код.

{foreach $order.items as $item}
{$item.quantity} шт × {wa_currency($item.price, $order.currency)} - {$item.name|escape} (арт.{$item.sku_code|escape})
{/foreach}

Выводит товары из заказа.

Вместо {$item.name|escape} нужно выводить SKU NAME, если он есть. Но как это сделать не смог разобраться. Все примеры на форуме в других ветках подставлял и проверял. Итог не срабатывают.

Прошу подсказать или помочь.


6 ответов

  • 1

    как-то так

    {foreach $order.items as $item}
    {$item.quantity} шт × {wa_currency($item.price, $order.currency)} - {if !empty($item.sku_code)}{$item.sku_code|escape}{else}{$item.name|escape}{/if}
    {/foreach}
    • +1
      dboriginal dboriginal 22 ноября 2017 21:38 #

      Спасибо за участие.

      Но проблема не в выводе НОМЕРА (SKU CODE) артикула. А проблема в выводе ИМЕНИ (SKU NAME) артикула.

      Не могу вывести наименование артикула

      Пример:

      Название продукта: Витамины для детей

      Название артикула 1: Витамины для детей (туба 100 гр)

      Название артикула 2: Витамины для детей (60 капсул)

      Как выглядит вывод сейчас

      {$item.name|escape} - Витамины для детей (Витамины для детей (туба 100 гр))

      а нужно вывести

      SKU NAME - Витамины для детей (туба 100 гр)





      • +1

        В заказе название sku не хранится. И нет гарантий, что в магазине все еще есть товар с sku.code который записан в заказе.

        $item.name содержит название заказанной позиции, неважно есть такой товар в магазине или вы его удалили/переименовали. С sku такая же вещь.

        по идее-то sku name должны бы быть типа "туба 100 гр" или "60 капсул", тогда название заказанной позиции будет с ним формироваться так, как вы ожидаете. Но уже оформленные заказы это опять-же не затронет. Там названия будут такие, как на момент заказа


      • +1

        В заказе имя артикула, если оно есть, присутствует в скобках после названия товара

        Имя товара (имя артикула)

        Так что если есть желание, артикул можно выкусывать регуляркой из названия товара.
        Например так
        {$item.name|escape|regex_replace:"/^.*\((.*)\)/":"${1}"}
        Правда если у товара нет артикула, но есть в конце что-то в скобках "Имя товара (опаопа)" то результат будет не совсем тот который вы ожидаете -)

        • +1
          dboriginal dboriginal 23 ноября 2017 11:50 #

          Попробовал и ваш вариант и еще один. В сожалению не один не вывел содержимое скобок.

          {$item.name|escape|regex_replace:"/^.*\((.*)\)/":"${1}"}
          {$item.name|escape|regex_replace:'/^.*\((.*)\)/':'${1}'}
          {$item.name|escape|regex_replace:"/^.*\((.*)\)/":"/1"}
          {$item.name|escape|regex_replace:'/^.*\((.*)\)/':'/1'}
          
          {$item.name|escape|regex_replace:'/^.*\((.*)\)/':'${1}'}
          {$item.name|escape|regex_replace:"/^.*\((.*)\)/":"${1}"}
          {$item.name|escape|regex_replace:'/^.*\((.*)\)/':'/1'}
          {$item.name|escape|regex_replace:"/^.*\((.*)\)/":"/1"}

          http://regexstorm.net/tester?p=%5c%28.*%5c%29&i=%d...

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите