M
M
Mad-medved2019-03-12 15:52:40
1C-Bitrix
Mad-medved, 2019-03-12 15:52:40

How to remove the navigation chain ("breadcrumbs") from a specific page in Bitrix?

There is a common navigation chain for the entire site written in header.php. But, on a specific page, you need to remove the general navigation chain and display a separate one. I display a separate chain on the page by adding the "bitrix:breadcrumb" component, but the general chain written in the template also remains. If you add to the page: $APPLICATION->SetPageProperty("NOT_SHOW_NAV_CHAIN", "Y"); then all chains are removed, including the separately added one. How to remove from this page only the general navigation chain written in the template?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
K
Kudis, 2019-03-13
@kudis

Make a deferred method.
Exactly how native crumbs work.
For example:

// свойство ещё не установлено - будет пусто
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') . '" ';

A
Adamos, 2019-03-12
@Adamos

Register in the template

if(!defined('CUSTOM_NO_BREADCRUMBS')) {
// подключение крошек
}

and on the right page before including header.php
define('CUSTOM_NO_BREADCRUMBS', true);

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question