помогите дописать {if $wa->currentUrl() == "/категория/"}... Есть решение

А нужно, чтобы показывался код на странице /категория/ и на всех вложенных подкатегориях (без страниц товара).

Уже голову сломал, как это сделать.

заранее спасибо!

10 ответов

  • 2
    replicant 9 июля 2019 11:37 #

    В зависимости от того шаблона, куда вы хотите это поставить можно попробовать пойти от обратного и сделать вот так
    {if $action !== 'product' && empty($product.id)}...блок, который надо показывать...{/if}


    Если у вас во всех ваших URL категорий и подкатегорий используется тип адресации, когда перед названием категории вставляется /category/название, то можно сделать как-нибудь так

    {if strpos($wa->currentUrl(true),"/category")}...{/if}

    Это можно делать, например, в шаблоне товарных списков типа list-thumbs.html

    Вообще, честно говоря, возникновение подобной задачи очень интересует. Дело в том, что, если вы будете использовать вставку в шаблон category.html какого-то блока, то на товарных страницах он в принципе показан не будет, т.к. этот шаблон не грузится с товарной страницей, а поэтому и условие не нужно.

    Нужна полная история возникновения задачи, чтобы понять суть более полно.

    • +2
      {if $action !== 'product' && empty($product.id)}...блок, который надо показывать...{/if}

      Если такой код прописать в шаблоне main.html, то он будет выводится везде, не только в категориях, может лучше прописать

      {if !empty($category.id)}...блок, который надо показывать только в категориях или под категориях...{/if}

      • +2
        replicant replicant 9 июля 2019 12:01 #

        Можно и так. Ваша идея более правильная. Мое предположение исключает только товарные страницы. Показалось, что задача не полностью обрисована. Решение может зависеть от того, в какой шаблон делается вставка блока.

    • +1
      Виталий Виталий 9 июля 2019 13:47 #

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

  • 2
    itDesign Партнер-эксперт 9 июля 2019 13:22 # Решение

    Насколько я понял, вопрос в том, как по маске указать 

    {if $wa->currentUrl() == "/категория/и плюс все вложенные категории"}

    Ну или как через роутинг такое изобразить

    • +1
      Виталий Виталий 9 июля 2019 13:45 #

      да, все верно!

      нужно именно маску указать. 

      пока вот что получается:

      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}

      вот)

      • +3
        replicant replicant 9 июля 2019 14:34 #

        Есть разница между

        {if strpos($wa->currentUrl(true),"/lepnina/artpole")}

        и

        {if $wa->currentUrl() == "/lepnina/artpole/"}

        Попробуйте мой вариант. Он по идее должен учесть ваши вложенные подкатегории в лепнину Артполе.

        Но, если делать по уму, то надо задействовать доп. параметры в настройках конкретных категорий, а не заниматься разбором УРЛ.

        Вытаскивать доп.параметры в шаблоне и при проверке отдавать либо списком, либо плиткой, если задано плитка.

        Создавайте доп. параметр view=plitka. Его наличие для нужных категорий - ваш ключ. Проверяйте его в шаблоне как {if $category.params.view == 'plitka'} отдать плиткой {else} отдать списком {/if}

        • +2
          replicant replicant 9 июля 2019 14:56 #

          Или вот так как-то {if !empty($category.params.view)}...{else}...{/if}

          В любом случае основная мысль такова, что вид витрины (по сути о нём речь) лучше определять не в зависимости от УРЛ, а по каким-то другим ключам.

          • +1
            Виталий Виталий 9 июля 2019 16:11 #

            да, все по делу написали! 

            сделал, как вы порекомендовали. Все работает! благодарю!

            вот это решение:

            {if $category.params.view == 'plitka'} отдать плиткой {else} отдать списком {/if}

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

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