Название товара в хлебных крошках

Здравствуйте, хлебные крошки не выводятся у товаров в полной мере - в цепочке отсутствует название товара, т.е. именно конечной открытой страницы товара. Посоветуйте пожалуйста, как подправить данный код.

Заранее спасибо за ответы.

{strip}
{$_is_personal_area = $wa->globals("isMyAccount")}
{$_global_breadcrumbs = $wa->globals("breadcrumbs")}
{$_hide_crumbs = $wa->globals("hideCrumbs")}
{$_breadcrumbs = []}
{if !empty($breadcrumbs)}
{$breadcrumbs = array_merge($_breadcrumbs, $breadcrumbs)}
{elseif !empty($_global_breadcrumbs)}
{$breadcrumbs = array_merge($_breadcrumbs, $_global_breadcrumbs)}
{else}
{$breadcrumbs = $_breadcrumbs}
{/if}
{if empty($_hide_crumbs)}
{_renderBreadcrumbs breadcrumbs=$breadcrumbs}
{/if}
{/strip}

6 ответов

  • 2
    replicant 1 февраля 2019 07:37 #

    У вас не только название товара не выводится, но и название открытой категории наверняка тоже. Вот пример с названием товара и открытой категории

    {if !empty($breadcrumbs)}
         {if $product.name && !strpos($smarty.server.REQUEST_URI,"reviews")}
              {$pageName=$product.name}
           {else}
              {if $category.name}
                   {$pageName=$category.name}
              {/if}
         {/if}
            <nav class="breadcrumbs" itemprop="breadcrumb">
                    <a href="{$wa_app_url}">{$wa->shop->settings('name')}</a>
                {foreach $breadcrumbs as $breadcrumb}
                    {if $breadcrumb}
                        <span class="rarr"> &rarr; </span><a href="{$breadcrumb.url}">{$breadcrumb.name|escape}</a>
                    {/if}
                {/foreach}
    {if $pageName}<span class="rarr"> &rarr; </span><span>{$pageName}</span>{/if}
            </nav>
    {/if}

    Собственно вам в качестве примера нужны строки 2-8 и уже сам вывод $pageName (3-я снизу). По такому принципу и сделайте у себя (добавьте недостающее). Сначала определяете открыт продукт или категория, а в конце рендера добавляете это значение.

  • 1
    Вадим Нечитайлов 2 февраля 2019 00:36 #

    Когда вставляю этот код целиком вместо старого- работает чётко как надо, но дизайн и положение строки совершенно не устраивает.

    Ясно, что 2-8 строки отвечают за то что открыто (товар или категория), но куда добавить недостающее- не понимаю. Может быть можно как то подробнее.

    Спасибо.

    • +1
      replicant replicant 2 февраля 2019 12:37 #

      Дизайн и положение надо подстраивать под себя в CSS. Убрать чужие классы и сделать свои. Строки 2-8 ставите после строки

      {if !empty($breadcrumbs)} 

      в свой код ровно так же как в примере

      А третью снизу строку берете и ставите в свой код после вашего вывода хлебных крошек.

  • 1
    Вадим Нечитайлов 3 февраля 2019 18:42 #

    Сделал по вашему совету, работает. Но основные категории не выводятся (только подкатегории). И подскажите пожалуйста, как поменять стили? А то сосем некрасиво получается.

    {strip}
    {$_is_personal_area = $wa->globals("isMyAccount")}
    {$_global_breadcrumbs = $wa->globals("breadcrumbs")}
    {$_hide_crumbs = $wa->globals("hideCrumbs")}
    {$_breadcrumbs = []}
    {if !empty($breadcrumbs)}
    {if $product.name && !strpos($smarty.server.REQUEST_URI,"reviews")}
    {$pageName=$product.name}
    {else}
    {if $category.name}
    {$pageName=$category.name}
    {/if}
    {/if}
    {$breadcrumbs = array_merge($_breadcrumbs, $breadcrumbs)}
    {elseif !empty($_global_breadcrumbs)}
    {$breadcrumbs = array_merge($_breadcrumbs, $_global_breadcrumbs)}
    {else}
    {$breadcrumbs = $_breadcrumbs}
    {/if}
    {if empty($_hide_crumbs)}
    {_renderBreadcrumbs breadcrumbs=$breadcrumbs}
    {if $pageName}<span class="rarr"> &rarr; </span><span>{$pageName}</span>{/if}
    {/if}
    {/strip}
    • +1
      replicant replicant 3 февраля 2019 20:07 #

      Завтра на досуге попробую для темы Гипермаркет и напишу тут ответ. У меня как раз на одном тестовом отладочном сайте такая тема стоит.

    • +1
      replicant replicant 3 февраля 2019 21:18 #

      Идем в файл css/custom.css и там для класса

      .s-breadcrumbs-wrapper (искать поиском по файлу, он далеко внизу где-то ниже 2200 строки)

      делаем вот такие свойства

      .s-breadcrumbs-wrapper {
        margin: 21px 0 0;
        padding: 0 4px 0 16px;
        font-size: 12px;
        line-height: 16px;
        display: inline-block;
      }

      А в шаблоне breadcrumbs.html строка вывода поменяется на такую

      {if $pageName}<div class="s-breadcrumbs-wrapper" style="display:inline;padding:0;"><span class="s-item s-link"> &rarr; {$pageName}</span></div>{/if}  

      Соответственно выглядеть это будет так (как родная встала)




      Про основные категории понятно, т.к. там по факту empty($breadcrumbs) выполняется, то ничего и не происходит. Если хотите, то сделайте так.

      Перед самым последним закрывающим {/strip} добавьте строку
      {if $action == 'category' && empty($breadcrumbs)}<div class="s-breadcrumbs-wrapper" style="display:inline;padding:0;"><span class="s-item s-link"> {$category.name}</span></div>{/if}

      И тогда рядом с желтым домиком будет текущая категория даже тогда, когда она "растет из корня", т.е. типа иными словами "главная"

  • 1
    Вадим Нечитайлов 3 февраля 2019 23:13 #

    Идеально получилось. replicant - вам огромный респект за советы! Спасибо.

  • 1
    Вадим Нечитайлов 6 февраля 2019 01:19 #

    Ещё один вопрос: в настройках /site/ , сделал всё так же, но крошки там совсем не выводятся.

    • +1
      replicant replicant 6 февраля 2019 11:01 #

      Не надо было этого делать в настройках приложения Сайт, потому что там всё не так. Там товаров нет, категорий тоже. Зачем вы это сделали?

      Если вы хотите создавать страницы с контентом для магазина, то проще и логичнее это делать именно в приложении Магазин, чтобы избежать в том числе и добавки в виде /site/ к адресам. Хотя у всех разные задачи и может быть вам такое и не подойдет, но хлебные крошки приложения Сайт лучше не трогать, если не знать в точности как все работает и для чего это нужно. В настройках маршрутизации приложение Сайт у себя обычно делаю скрытым, а url вида /site/* с переадресацией на главную магазина, который в корне домена.

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

      {if empty($_is_main_page) && $action == 'category' || $action == 'product' || strpos($smarty.server.REQUEST_URI,"reviews")}

      Чтобы желтый домик на страницах без подстраниц приложения Магазин не мелькал зря, когда у них пустой $breadcrumbs




      Без домика как-то веселее. :)

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

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