Breadcrumb Navigation Configuration in 1C-Bitrix
Breadcrumbs in Bitrix are generated in two ways: automatically through the site structure and programmatically via the AddChainItem method. In practice, issues arise: breadcrumbs don't display, show incorrect paths, or contain technical page titles instead of user-friendly names.
How Bitrix Generates Breadcrumbs
Bitrix automatically builds the navigation chain based on the site's folder structure. Each folder has a .section.php file that defines the section name for breadcrumbs.
Example /catalog/.section.php:
<?
$APPLICATION->SetTitle('Catalog');
$APPLICATION->AddChainItem('Catalog', '/catalog/');
?>
The bitrix:breadcrumb component outputs the collected chain:
$APPLICATION->IncludeComponent('bitrix:breadcrumb', '', [
'START_FROM' => 0, // starting level (0 = from home)
'PATH' => '', // empty = current path
'SHOW_ROOT' => 'Y', // display "Home"
]);
Breadcrumbs in Catalog Components
In bitrix:catalog.element and bitrix:catalog.section components, breadcrumbs are added automatically when ADD_SECTIONS_CHAIN = Y is set. The component adds all sections from the root to the current location using the infoblock structure.
If a product is linked to multiple sections, the breadcrumb follows IBLOCK_SECTION_ID (the product's primary section).
Programmatic Breadcrumb Addition
In any PHP code or component template:
// Add item to the chain
$APPLICATION->AddChainItem('Item Name', '/path/to/page/');
// Rename the last item (current page)
$APPLICATION->SetTitle('Page Title'); // title = last breadcrumb
The chain is stored in the $APPLICATION object and reset with each request.
Breadcrumb Template Configuration
For custom breadcrumb styling — create a component template:
/local/components/bitrix/breadcrumb/templates/custom/template.php
Template variables:
-
$arResult['ITEMS']— array of chain elements -
$item['TITLE']— item name -
$item['LINK']— item URL - Last element without
LINK— current page
Schema.org Markup for Breadcrumbs
To transmit structured data to search engines, add BreadcrumbList micromarkup to the template:
$jsonLd = ['@context' => 'https://schema.org', '@type' => 'BreadcrumbList', 'itemListElement' => []];
foreach ($arResult['ITEMS'] as $pos => $item) {
$jsonLd['itemListElement'][] = [
'@type' => 'ListItem',
'position' => $pos + 1,
'name' => $item['TITLE'],
'item' => 'https://site.com' . $item['LINK'],
];
}
echo '<script type="application/ld+json">' . json_encode($jsonLd, JSON_UNESCAPED_UNICODE) . '</script>';
Execution Timeline
Configuration and customization of breadcrumb templates with Schema.org markup — 2–4 hours.







