@Mad-medved

Как в битриксе убрать навигационную цепочку("хлебные крошки") с конкретной страницы?

Есть общая навигационная цепочка на весь сайт прописанная в header.php. Но, на конкретной странице необходимо убрать общую навигационную цепочку и вывести отдельную. Отдельную цепочку на странице вывожу добавлением компонента "bitrix:breadcrumb", но при этом общая цепочка прописанная в шаблоне также остаётся. Если на страницу добавить: $APPLICATION->SetPageProperty("NOT_SHOW_NAV_CHAIN", "Y"); то убираются все цепочки включая отдельно добавленную. Как с этой страницы убрать только общую навигационную цепочку прописанную в шаблоне?
  • Вопрос задан
  • 2024 просмотра
Пригласить эксперта
Ответы на вопрос 2
@kudis
Bitrix developer
Сделайте отложенный метод.
Ровно так, как работают нативные крошки.
Например:
// свойство ещё не установлено - будет пусто
echo '"' . $APPLICATION->GetPageProperty('NOT_SHOW_NAV_CHAIN_CUSTOM') . '" ';

// этот метод лучше определить где-нибудь в подключаемых классах
class BufferMethods
{
    public static function showCustomChain($chain)
    {
        global $APPLICATION;
        if ($APPLICATION->GetPageProperty('NOT_SHOW_NAV_CHAIN_CUSTOM') === 'Y') {
            return $chain;
        } else {
            return '';
        }
    }
}

// буферизируем Ваши хлебные крошки. Их не будет видно, они попадут в переменную $strChain
ob_start();
echo 'Здесь лежит компонент хлебных крошек, который будет появляться и исчезать в зависимости от значения NOT_SHOW_NAV_CHAIN_CUSTOM';
$strChain = ob_get_clean();

// свойство ещё не установлено, но мы используем отложенную функцию, значит будет результат в зависимости от значения
$APPLICATION->AddBufferContent(['BufferMethods', 'showCustomChain'], $strChain);

// свойство наконец установлено
$APPLICATION->SetPageProperty('NOT_SHOW_NAV_CHAIN_CUSTOM', 'Y');

// свойство уже установлено - будет значение
echo ' "' . $APPLICATION->GetPageProperty('NOT_SHOW_NAV_CHAIN_CUSTOM') . '" ';
Ответ написан
Комментировать
Adamos
@Adamos
Прописать в шаблоне
if(!defined('CUSTOM_NO_BREADCRUMBS')) {
// подключение крошек
}

а на нужной странице перед включением header.php
define('CUSTOM_NO_BREADCRUMBS', true);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы