Как в подключаемом файле темы определить текущую страницу (продукт, категория и т. д.)

В моей теме в футере подключается файл, в котором я хочу выводить содержимое в зависимости от текущей страницы (главная страница, страница категории, страница продукта, страница отзывов).

Как это однозначно определить?

К примеру переменная $product доступна и в странице самого продукта и в странице отзывов на продукт. Как мне определить что я нахожусь именно на странице отзывов?

Пробовал это делать через глобальные переменные $wa->globals.

Если я присваиваю значение глобальной переменной, к примеру, в product.html :


{$wa->globals("product_page", true)}
{$wa->globals("review_page", false)}

потом я c помощью include подключаю reviews.html . И в нем выполню:


{$wa->globals("product_page")|var_dump}
{$wa->globals("review_page")|var_dump}

результатом будет NULL NULL.


В чем тогда вообще смысл глобальных переменных?

4 ответа

  • 2
    Александр 16 марта 2016 09:23 #

    Используйте переменную $action, примерно так:

    strpos($action, 'product') !== false

    или

    $action == 'productReviews'

    *посмотрите что выдает данная переменная на интересующих вас страницах и создайте себе нужный набор условий

  • 2
    Владимир Сергеев 17 марта 2016 15:14 #

    Дополню Александра.

    {if $action == 'productReviews'}
      {* Код для страницы отзывов *} 
    {elseif $action == 'product'}  
      {* Код для страницы товаров *}    
    {elseif $action == 'category'}
      {* Код для страницы категорий товаров *}    
    {/if}
    {if $wa_url == $wa->currentUrl()}
      {* Код для главной страницы *}    
    {/if}
  • 1
    helloole 21 июля 2017 09:42 #

    У меня $action не выводится в product.cart.html, как тогда быть?

    • +1
      kadurinho kadurinho 21 июля 2017 09:50 #

      а с чего ему там срабатывать? это же подключаемая страница с выводом блока цены и артикулов, зачем там проверка? какая цель преследуется?

    • +2
      Александр Александр 3 августа 2017 13:47 #

      Такая ситуация с этим шаблоном может возникнуть только в том случае если шаблон вызван в самостоятельном потоке, а это попытка добавить в корзину товар с несколькими артикулами из категории или главной страницы(или любом другом месте где размещен список товаров).

      В этом случае вам нужно самостоятельно передать признак текущей страницы в адресе запроса.

      Один из вариантов такой, в файле формирующем список продуктов(обычно list-thumbs.html) есть примерно такая строка:

      {if $p.sku_count > 1}data-url="{$p.frontend_url}{if strpos($p.frontend_url, '?')}&{else}?{/if}cart=1"{/if}

      заменить ее на:

      {if $p.sku_count > 1}data-url="{$p.frontend_url}{if strpos($p.frontend_url, '?')}&{else}?{/if}cart=1&_action={$action|default:''}"{/if}

      В шаблоне product.cart.html делать проверку:

      {if $wa->post('_action') == 'category'}
      ... {/if}
  • 1
    Алексей Webasyst 21 июля 2017 10:11 #

    {wa_tpl_vars} даст вам все переменные в шаблоне.

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

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