Категория товара на странице карточки товара
На странице карточки товара выводится категория:
{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 ответов
Можно использовать "хлебные крошки" - $breadcrumbs, посмотреть содержимое - {var_dump($breadcrumbs)}
Таких вопросов много, но ответа ДЛЯ ЧАЙНИКА я не нашел!
Однозначного ответа на этот вопрос для "чайника" нет.
Один из вариантов, который можно реализовать без доп.кода(хэлперов, плагинов и прочего), непосредственно в шаблоне, выглядит примерно так:
заводите рекурсивную функцию получения рутовой категории и вызываете её в своём цикле
{getroot param=$c assign="root_id"}
получаете id рутовой категjрии, и далее получаете массив самой рутовую категории(так проще и наглядней чем из кастомной функции вернуть массив рутовой категории, но лишний запрос к базе).
{$root_cat=$wa->shop->category($root_id)}
из которого уже делаете что хотите...
Если нужно только имя, то из кастомной функции можно только имя вернуть, чтобы лишний раз не вызывать $wa->shop->category
Это не самый продуктивный вариант, но самый простой для конечного пользователя на текущий момент.
В идеале, попросите разработчиков добавить метод getrootcategory в shopViewHelper.
Ненужно таких сложностей, в шаблон передается идентификатор родительской категории:
Просто проверяйте его наличие:
Есть. Но это id главной категории товара.
А тут речь о цикле, перебирающем все категории, к которым принадлежит товар.
И корневых может быть несколько.