помогите дописать {if $wa->currentUrl() == "/категория/"}... Есть решение
А нужно, чтобы показывался код на странице /категория/ и на всех вложенных подкатегориях (без страниц товара).
Уже голову сломал, как это сделать.
заранее спасибо!
А нужно, чтобы показывался код на странице /категория/ и на всех вложенных подкатегориях (без страниц товара).
Уже голову сломал, как это сделать.
заранее спасибо!
10 ответов
В зависимости от того шаблона, куда вы хотите это поставить можно попробовать пойти от обратного и сделать вот так
{if $action !== 'product' && empty($product.id)}...блок, который надо показывать...{/if}
Если у вас во всех ваших URL категорий и подкатегорий используется тип адресации, когда перед названием категории вставляется /category/название, то можно сделать как-нибудь так
{if strpos($wa->currentUrl(true),"/category")}...{/if}
Это можно делать, например, в шаблоне товарных списков типа list-thumbs.html
Вообще, честно говоря, возникновение подобной задачи очень интересует. Дело в том, что, если вы будете использовать вставку в шаблон category.html какого-то блока, то на товарных страницах он в принципе показан не будет, т.к. этот шаблон не грузится с товарной страницей, а поэтому и условие не нужно.
Нужна полная история возникновения задачи, чтобы понять суть более полно.
Если такой код прописать в шаблоне main.html, то он будет выводится везде, не только в категориях, может лучше прописать
Можно и так. Ваша идея более правильная. Мое предположение исключает только товарные страницы. Показалось, что задача не полностью обрисована. Решение может зависеть от того, в какой шаблон делается вставка блока.
да согласен
А тут еще скорей всего надо просто в шаблоне category.html добавить текст и все, не каких проверок)
ниже описал подробно. Примеры на работающем сайте выложил.
Насколько я понял, вопрос в том, как по маске указать
{if $wa->currentUrl() == "/категория/и плюс все вложенные категории"}
Ну или как через роутинг такое изобразить
да, все верно!
нужно именно маску указать.
пока вот что получается:
https://nr-oboi.ru/wallpapers/ - вот обычный раздел "брендов". По факту это обычные категории товаров. Они идут "плиткой".
https://nr-oboi.ru/wallpapers/1838-wallcoverings/ - в любом бренде вложенные подкатегории уже идут списком.
А в разделе лепнины в одном из брендов Артполе нужно сделать не списком подкатегории, а так же плиткой. https://nr-oboi.ru/lepnina/artpole/ - вот сейчас что получается. Но это работает только для данного урла. А все следующие из него урлы подкатегорий уже не плиткой, а как обычно списком. Т.е код работает только для одной категории.
Вопрос - как задать маску для остальных подкатегорий?
На данный момент написан такой код для одной категории
{if $wa->currentUrl() == "/lepnina/artpole/"}
код вывода картинок категорий плиткой
{else}
код вывода подкатегорий списком
{/if}
вот)
Есть разница между
{if strpos($wa->currentUrl(true),"/lepnina/artpole")}
и
{if $wa->currentUrl() == "/lepnina/artpole/"}
Попробуйте мой вариант. Он по идее должен учесть ваши вложенные подкатегории в лепнину Артполе.
Но, если делать по уму, то надо задействовать доп. параметры в настройках конкретных категорий, а не заниматься разбором УРЛ.
Вытаскивать доп.параметры в шаблоне и при проверке отдавать либо списком, либо плиткой, если задано плитка.
Создавайте доп. параметр view=plitka. Его наличие для нужных категорий - ваш ключ. Проверяйте его в шаблоне как {if $category.params.view == 'plitka'} отдать плиткой {else} отдать списком {/if}
Или вот так как-то {if !empty($category.params.view)}...{else}...{/if}
В любом случае основная мысль такова, что вид витрины (по сути о нём речь) лучше определять не в зависимости от УРЛ, а по каким-то другим ключам.
да, все по делу написали!
сделал, как вы порекомендовали. Все работает! благодарю!
вот это решение:
{if $category.params.view == 'plitka'} отдать плиткой {else} отдать списком {/if}