Выводим и стилизуем bitrix:breadcrumb (хлебные крошки)

Опубликовано: 15.06.2017

Шаг первый - устанавливаем и настраиваем компонент

Первым делом разместим сам компонент bitrix:breadcrumb и сохраним шаблон компонента. Стандартная сборка компонента позволяет вывести хлебные крошки начиная с первого уровня вложенности. Например у вас такая структура /о компании/новости/список новостей.php. В этом случаи хлебные крошки покажут О Компании -> Новости. В случае с новостями мы можем поставить галочку в настройках чтобы показывалась конечная страница новостей в цепочке навигации. Однако когда мы используем обычную страницу у нас нету возможности внести ее в цепочку навигации. Для решения такой задачи есть два способа.


WooCommerce Блок произвольного текста

Первый способ заключается в том, что мы будем использовать стандартную функцию Битрикса CMain::AddChainItem . Принцип работы следующий, мы должны размещать данную функцию после вызова компонента bitrix:breadcrumb , содержимое у нее будет приблизительно такое <?$APPLICATION->AddChainItem("Список новостей")?>. Теперь наша цепочка будет выглядеть вот так: О Компании -> Новости -> Список новостей. Стоит отметить что последний пункт не является ссылкой по умолчанию.

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

Далее подправим немного шаблон самого компонента.

<?php if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); global $APPLICATION; if(empty($arResult)) return ""; $strReturn = ''; $itemname = $APPLICATION->GetProperty("breadcrumb"); $strReturn .= '<div class="breadcrumb">'; $itemSize = count($arResult); for($index = 0; $index < $itemSize; $index++){ $title = htmlspecialcharsex($arResult[$index]["TITLE"]); $nextRef = ($index < $itemSize-2 && $arResult[$index+1]["LINK"] <> ""? ' itemref="bx_breadcrumb_'.($index+1).'"' : ''); $child = ($index > 0? ' itemprop="child"' : ''); $strReturn .= ' <div class="breadcrumb__item"> <a class="breadcrumb__link" href="'.$arResult[$index]["LINK"].'"> <span class="breadcrumb__item-name">'.$title.'</span> </a> </div>'; } if (!empty($itemname)) { $strReturn .= ' <div class="breadcrumb__item"> <a class="breadcrumb__link" href="'.$APPLICATION->GetCurUri().'"> <span class="breadcrumb__item-name">'.$itemname.'</span> </a> </div>'; } $strReturn .= '</div>'; return $strReturn;

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

rss