$breadcrumbs на текстовых страницах

2

Понятно, что в дефолтной теме массив $breadcrumbs с иерархией родительских страниц не встречается на текстовых страницах, но всё же было бы не плохо добавить его в движок, чтобы сторонние разработчики тем дизайна могли его использовать в своих разработках.

3 комментария

  • +1
    replicant replicant 9 апреля 2020 18:27 #

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

    {$_breadcrumbs = []}
    
    {if !empty($breadcrumbs)}
        {$_breadcrumbs[] = [
            "url" => $wa_app_url,
            "name" =>  "Главная"]
        }
        {$_breadcrumbs = array_merge($_breadcrumbs,$breadcrumbs)}
    {/if}
    
    {if !empty($_breadcrumbs)}
        <div class="bc">
            <div class="s-b-wrapper">
                <ul class="s-b-block" itemprop="breadcrumb">
                    {foreach $_breadcrumbs as $breadcrumb}
                        {if !empty($breadcrumb)}
                            <li class="s-b-item">
                                <a class="s-b-link" href="{$breadcrumb.url}">{$breadcrumb.name|escape}</a>{if !$breadcrumb@last}<span class="rz">-</span>{/if}
                            </li>
                        {/if}
                    {/foreach}
                </ul>
            </div>
        </div>
    {/if}
    В итоге получается вот так как-то на сайте


    В Дефолте когда-то было вот так сделано. Сейчас не знаю как. Надо ставить смотреть. Но вроде был массив на страницах добавлен.
    {if !empty($breadcrumbs)}
        <nav class="breadcrumbs" itemprop="breadcrumb">
                <a href="{$wa_app_url}">{$wa->shop->settings('name')}</a>
            {foreach $breadcrumbs as $breadcrumb}
                {if $breadcrumb}
                    <span> &rarr; </span><a href="{$breadcrumb.url}">{$breadcrumb.name|escape}</a>
                {/if}
            {/foreach}
        </nav>
    {/if}
    
    {$subpages = $wa->shop->pages($page.id)}
    {if $subpages}
            {foreach $subpages as $p}
                <a href="{$p.url}">{$p.name}</a>
            {/foreach}
    {/if}

    В приниципе breadcrumb он и в Африке breadcrumb. Посмотреть как устроен массив в конкретном случае можно через wa_tpl_vars например.

    • +1

      Дмитрий, спасибо за ваш комментарий! 

      Для своих тем дизайна у меня уже есть проверенное решение, которое я использую – есть лазейка с $page_parents, но тоже с нюансами.

      Но ваш комментарий ещё раз показывает, что было бы не плохо сделать эту функцию, чтобы разработчикам тем дизайна не пришлось заниматься подобными костылями и ломать голову почему в приложении Сайт $breadcrumbs работают, а в других приложениях – почему-то нет. 

      • +1
        replicant replicant 10 апреля 2020 14:03 #

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

        В Магазине вариант с ними уже не прокатит. Использую массив  $wa->shop->pages($page.id), когда нужно.

        Ваш вариант с $page_parents заинтересовал. Посмотрел его. Вполне себе можно поюзать при случае. Взял на заметку.

        Стараюсь делать страницы линейно без вложений. При наличии Магазина страницы в Сайте не делаю совсем. Неудобно. Страницы там. Магазин сям. Все раскидано получается. Сайт, при наличии Магазина конечно же, вообще "убираю" как поселение. От Сайт нужны только Блоки и основные Настройки.

        Добавить комментарий

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