Категория товара на странице карточки товара

На странице карточки товара выводится категория:

{if $product.categories}

<p id="product-categories">

<strong>[`Categories`]:</strong>

{foreach $product.categories as $c}{if $c.status}

<span class=""><a href="{$wa->getUrl('/frontend/category', ['category_url' => $c.full_url])}">{$c.name|escape}</a></span>

{/if}{/foreach}

</p>

{/if}

Как вывести не ближайшую категорию, а самую верхнюю?

Пример: Телевизоры-Sony-40''-KDT40. Нужно вывести не 40'' а Телевизоры

5 ответов

  • 1

    Можно использовать "хлебные крошки" - $breadcrumbs, посмотреть содержимое - {var_dump($breadcrumbs)}

  • 1
    Владимир Соколов 4 января 2016 13:14 #

    Таких вопросов много, но ответа ДЛЯ ЧАЙНИКА я не нашел!

    • +1



      Однозначного ответа на этот вопрос для "чайника" нет.
      Один из вариантов, который можно реализовать без доп.кода(хэлперов, плагинов и прочего), непосредственно в шаблоне, выглядит примерно так:

      {*кастомная функция смарти непосредственно в шаблоне*}
              {function getroot}
                  {$cur_cat=$wa->shop->category($param.parent_id)}
                  {if $aa.parent_id == 0}
                      {$cur_cat.id}
                  {else}
                      {getroot param=$cur_cat}
                  {/if}
              {/function}
      {*/кастомная функция*}
      
                      <strong>[`Categories`]:</strong>
                      {foreach $product.categories as $c}{if $c.status}
                          <a href="{$wa->getUrl('/frontend/category', ['category_url' => $c.full_url])}">{$c.name|escape}</a>
                          {getroot param=$c assign="root_id"}
      {$root_cat=$wa->shop->category($root_id)}
      <p>Самая верхняя категория: $root_cat.name</p>
      {/if}{/foreach}

      заводите рекурсивную функцию получения рутовой категории и вызываете её в своём цикле
      {getroot param=$c assign="root_id"}
      получаете id рутовой категjрии, и далее получаете массив самой рутовую категории(так проще и наглядней чем из кастомной функции вернуть массив рутовой категории, но лишний запрос к базе).

      {$root_cat=$wa->shop->category($root_id)}

      из которого уже делаете что хотите...

      Если нужно только имя, то из кастомной функции можно только имя вернуть, чтобы лишний раз не вызывать $wa->shop->category

      Это не самый продуктивный вариант, но самый простой для конечного пользователя на текущий момент.


      В идеале, попросите разработчиков добавить метод getrootcategory в shopViewHelper.

  • 1

    Ненужно таких сложностей, в шаблон передается идентификатор родительской категории:

    $root_category_id

    Просто проверяйте его наличие:

    {if !empty($root_category_id)}{$root_category_id}{/if}

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

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