- Не корректная работа хлебных крошек
- Breadcrumbs
- Проблема с крошками и заголовками
- Подробное руководство по настройке хлебных крошек bitrix.breadcrumb в CMS Bitrix
- Как вывести хлебные крошки на сайте?
- Как отключить bitrix:breadcrumb для главной страницы?
- Массив настроек компонента bitrix.breadcrumb
- Как формируется навигационная цепочка в Bitrix?
- Использование хлебных-крошек (bitrix:breadcrumb) внутри компонентов Bitrix
Не корректная работа хлебных крошек
Приветствую.
На сайте имеется несколько страниц, идентичные по структуре. Все они выводят элементы одного из инфоблоков, с небольшой разницей по фильтру. Допусти, есть три страницы : каталог, новинки и скидки. Вывод элементов производится компонентом catalog.section. Так вот в новинках и скидках хлебные крошки выводятся корректно Главная страница -> Новинки , а вот в каталоге лишь Главная страница , и то сдвинутая на несколько пикселей в право. Совсем не понимаю в чем разница между этими страницами, ведь они одинаковые.
Смог решить проблему, путем добавления $APPLICATION->AddChainItem(«Каталог», «/catalog/»; и «ADD_SECTIONS_CHAIN» => «Y». Теперь так отображаются разделы элементов инфоблока Главная страница -> Каталог -> Колеса -> Подшипники колес .
Но вот на странице элемента вот так Главная страница -> Каталог -> 9487 . Беда в том, что при обновлении страницы элемента, крошки меняются на http://moto.local/catalog/ Главная страница -> Каталог -> 9487 -> Трансмиссия Звезды задние стальные товар . При том, что после слова «Трансмиссия» стрелочки, конечно, не отображаются и страница товара отображается пустой.
При чистке кеша, отображение крошек стабилизируется в Главная страница -> Каталог -> 9487 .
На самой странице элемента добавляю пару строк:
$APPLICATION->AddChainItem(«Каталог», «/catalog/» ;
$APPLICATION->AddChainItem(explode(‘/’, $APPLICATION->GetCurPageParam())[2], «/catalog/» ;
и
«ADD_SECTIONS_CHAIN» => «Y»,
«ADD_ELEMENT_CHAIN» => «Y»,
Помогите пожалуйста разобраться в чем проблема, почему в каталоге, который является аналогичным «новинкам» и «скидкам» не отображает крошки без дополнительных строк кода и как сделать, чтобы на станице товара они отображались в виде Главная страница -> Каталог -> Трансмиссия — > Звезды задние стальные -> товар .
Источник
Breadcrumbs
$APPLICATION->AddChainItem($params) Добавляет Элемент в начало цепочки, а не в конец. (1С-Битрикс: Управление сайтом 14.0.7).
Сам компонент подключаю так:
IncludeComponent(«bitrix:breadcrumb»,»»,Array(
«START_FROM» => «0»,
«PATH» => «»,
«SITE_ID» => «s1»
)
);?>
В шаблон catalog.section, в файле result_modifier.php добавте
| Цитата |
|---|
| Дмитрий Сиротин пишет: А Вы выводите компонент bitrix:breadcrumb до добавления нового элемента или после? Это критично, т.к. в самом методе изменяется свойство объекта $APPLICATION. |
Добавил в header.php следующий код
Компонент «bitrix:catalog.element» добавляет разделы вцепочку навигации после исполнения шаблона. Поэтому все махинации с добавление новых элементов цепочки навигации внутри шаблона добавляют наши элементы перед разделами. А нам надо, что бы товары добавлялись в самый конец.
Что можно сделать? Я решил это следующим способом.
1) В файле шаблона «catalog\templates\.default\element.php» ДО вызова компонента «bitrix:catalog.element» добавляем код:
| Цитата |
|---|
| Андрей Сосенков пишет: Бл. Ну неужели нельзя сделать, чтобы конечные элементы выводились в навигацию по дефолту!! Ну неужели так сложно! Костыли в 12 версию колупали, на 14 они уже не работают и надо снова изобретать велосипед |
А почему элементы должны попадать в цепочку (ах, ну да — сеошники)? Цепочка строится на основе разделов сайта, элемент не является разделом.
Если сделать правильные костыли, они не ломаются при обновлении.
| Цитата |
|---|
| Евгений Малков пишет: А почему элементы должны попадать в цепочку (ах, ну да — сеошники)? Цепочка строится на основе разделов сайта, элемент не является разделом. |
| Цитата |
|---|
| Олег Постоев пишет: А по моему вполне логично использовать элемент в конце цепочки навигации — становится понятно где находится то, что сейчас открыто. |
| Цитата |
|---|
| Андрей Сосенков пишет: Бл. Ну неужели нельзя сделать, чтобы конечные элементы выводились в навигацию по дефолту!! Ну неужели так сложно! Костыли в 12 версию колупали, на 14 они уже не работают и надо снова изобретать велосипед Просто слов нет! |
Столкнулся с такой проблемой. Последний элемент хлебных крошек на карточке товаров (название товара) дублирует содержимое h1.
Сейчас H1 и название товара в хлебных крошках берутся из раздела SEO. Нужно чтобы последний элемент брался из поля Название товара.
Например: Сейчас в хлебных крошках и H1 — Купить желтое кресло
Должно быть: H1 — Купить желтое кресло, в крошках — Желтое кресло
Источник
Проблема с крошками и заголовками
| Цитата |
|---|
| Александр Юдин написал: Неужели никто не шарит в выводе крошек, помогите пожалуйста. |
| Цитата |
|---|
| Александр Юдин написал: Я думал данный форум существует для обмена опытом. Видимо ошибся. |
Отключил вывод выпадающего меню у крошек, тупо отредактировав шаблон и убрал вывод подкатегорий.
if($index
IncludeComponent(
«bitrix:news.detail»,
«services»,
Array(
«ACTIVE_DATE_FORMAT» => «j F Y»,
«ADD_ELEMENT_CHAIN» => «Y»,
«ADD_SECTIONS_CHAIN» => «Y»,
«AJAX_MODE» => «N»,
«AJAX_OPTION_HISTORY» => «N»,
«AJAX_OPTION_JUMP» => «N»,
«AJAX_OPTION_STYLE» => «Y»,
«BROWSER_TITLE» => «-«,
«CACHE_GROUPS» => «Y»,
«CACHE_TIME» => «36000000»,
«CACHE_TYPE» => «A»,
«CHECK_DATES» => «Y»,
«DISPLAY_BOTTOM_PAGER» => «Y»,
«DISPLAY_DATE» => «Y»,
«DISPLAY_NAME» => «Y»,
«DISPLAY_PICTURE» => «Y»,
«DISPLAY_PREVIEW_TEXT» => «Y»,
«DISPLAY_TOP_PAGER» => «N»,
«ELEMENT_CODE» => $_REQUEST[«ELEMENT_CODE»],
«ELEMENT_ID» => «»,
«FIELD_CODE» => array(«DETAIL_PICTURE»,»»),
«IBLOCK_ID» => «3»,
«IBLOCK_TYPE» => «ittian_med_content»,
«IBLOCK_URL» => «»,
«INCLUDE_IBLOCK_INTO_CHAIN» => «N»,
«META_DESCRIPTION» => «-«,
«META_KEYWORDS» => «-«,
«PAGER_SHOW_ALL» => «Y»,
«PAGER_TEMPLATE» => «»,
«PAGER_TITLE» => «Страница»,
«PROPERTY_CODE» => array(«PRICES»),
«SET_STATUS_404» => «N»,
«SET_TITLE» => «Y»,
«USE_PERMISSIONS» => «N»,
«USE_SHARE» => «N»
)
);?>
3, «CODE» => $DB->ForSql($_REQUEST[‘SECTION_CODE’]));
$db_items = CIBlockSection::GetList(array(), $arFilter, false, $arSelect);
if($item = $db_items->GetNext()) <
if($item[«DEPTH_LEVEL»] == 1)<
$APPLICATION->IncludeComponent(
«bitrix:catalog.section.list»,
«services»,
Array(
«IBLOCK_TYPE» => «ittian_med_content»,
«IBLOCK_ID» => «3»,
«SECTION_ID» => «»,
«SECTION_CODE» => $_REQUEST[«SECTION_CODE»],
«COUNT_ELEMENTS» => «Y»,
«TOP_DEPTH» => «1»,
«SECTION_FIELDS» => array(«DESCRIPTION», «PICTURE», «DETAIL_PICTURE», «»),
«SECTION_USER_FIELDS» => array(«», «»),
«VIEW_MODE» => «LIST»,
«SHOW_PARENT_NAME» => «Y»,
«SECTION_URL» => «»,
«CACHE_TYPE» => «A»,
«CACHE_TIME» => «36000000»,
«CACHE_GROUPS» => «Y»,
«ADD_SECTIONS_CHAIN» => «Y»
)
);
>else <
$APPLICATION->IncludeComponent(
«bitrix:news.list»,
«services»,
Array(
«AJAX_MODE» => «N»,
«IBLOCK_TYPE» => «ittian_med_content»,
«IBLOCK_ID» => «3»,
«NEWS_COUNT» => «10»,
«SORT_BY1» => «ACTIVE_FROM»,
«SORT_ORDER1» => «DESC»,
«SORT_BY2» => «SORT»,
«SORT_ORDER2» => «ASC»,
«FILTER_NAME» => «»,
«FIELD_CODE» => array(‘DETAIL_PICTURE’),
«PROPERTY_CODE» => array(‘PRICE_USLUG’),
«CHECK_DATES» => «Y»,
«DETAIL_URL» => «»,
«PREVIEW_TRUNCATE_LEN» => «»,
«ACTIVE_DATE_FORMAT» => «j F Y»,
«SET_TITLE» => «N»,
«SET_STATUS_404» => «N»,
«INCLUDE_IBLOCK_INTO_CHAIN» => «N»,
«ADD_SECTIONS_CHAIN» => «Y»,
«HIDE_LINK_WHEN_NO_DETAIL» => «N»,
«PARENT_SECTION» => «»,
«PARENT_SECTION_CODE» => $_REQUEST[‘SECTION_CODE’],
«INCLUDE_SUBSECTIONS» => «Y»,
«CACHE_TYPE» => «A»,
«CACHE_TIME» => «36000000»,
«CACHE_FILTER» => «N»,
«CACHE_GROUPS» => «Y»,
«PAGER_TEMPLATE» => «main»,
«DISPLAY_TOP_PAGER» => «N»,
«DISPLAY_BOTTOM_PAGER» => «Y»,
«PAGER_TITLE» => «Новости»,
«PAGER_SHOW_ALWAYS» => «Y»,
«PAGER_DESC_NUMBERING» => «N»,
«PAGER_DESC_NUMBERING_CACHE_TIME» => «36000»,
«PAGER_SHOW_ALL» => «Y»,
«AJAX_OPTION_JUMP» => «N»,
«AJAX_OPTION_STYLE» => «Y»,
«AJAX_OPTION_HISTORY» => «N»
)
);
>
>
?>
IncludeComponent(
«bitrix:catalog.section.list2»,
«services»,
Array(
«ADD_SECTIONS_CHAIN» => «Y»,
«CACHE_GROUPS» => «Y»,
«CACHE_TIME» => «36000000»,
«CACHE_TYPE» => «A»,
«COUNT_ELEMENTS» => «Y»,
«IBLOCK_ID» => «3»,
«IBLOCK_TYPE» => «ittian_med_content»,
«SECTION_CODE» => $_REQUEST[«SECTION_CODE»],
«SECTION_FIELDS» => array(«DESCRIPTION»,»PICTURE»,»DETAIL_PICTURE»,»»),
«SECTION_ID» => «»,
«SECTION_URL» => «»,
«SECTION_USER_FIELDS» => array(«»,»»),
«SHOW_PARENT_NAME» => «Y»,
«TOP_DEPTH» => «1»,
«VIEW_MODE» => «LIST»
)
);?>
Подтвердите опасения, не знаю в какую сторону и двигаться.
Источник
Подробное руководство по настройке хлебных крошек bitrix.breadcrumb в CMS Bitrix
Как вывести хлебные крошки на сайте?
Для того чтобы вывести на сайте цепочку навигации, необходимо в файле header.php шаблона сайта разместить код вызова компонента bitrix.breadcrumb:
Как отключить bitrix:breadcrumb для главной страницы?
Как правило на главной странице сайта навигационная цепочка не выводиться, учтём это и добавим условие вывода компонента. Для этого нужно проверить на какой странице мы находимся, если это не главная страница, то выводим компонент bitrix.breadcrumb:
Массив настроек компонента bitrix.breadcrumb
| START_FROM | Указывается номер пункта, начиная с которого будет построена навигационная цепочка. В поле может быть задано числовое значение, определяющее уровень вложенности раздела на сайте. Например, 0 (ноль) означает, что построение навигационной цепочки начнется от корня сайта. Если 1, то с первого уровня текущего раздела и так далее. |
| PATH | Указывается путь, по которому будет построена навигационная цепочка. Если поле не заполнено совсем, то навигационная цепочка будет строиться для текущего пути. |
| SITE_ID | Указывается сайт для построения навигационной цепочки. Параметр устанавливается в случае многосайтовой версии, когда DOCUMENT_ROOT у сайтов разный. |
Как формируется навигационная цепочка в Bitrix?
Навигационная цепочка строиться на основе заголовков разделов (папок) сайта или при помощи компонентов, которые добавляют заголовки в навигационную цепочку.
Настроить заголовки папок сайта можно из административного интерфейса:
Или при помощи визуального редактора, открываете нужную страницу и:
Источник
Использование хлебных-крошек (bitrix:breadcrumb) внутри компонентов Bitrix
Часто сталкиваюсь с ситуацией, когда при вёрстке очередного макета сайта, «хлебные-крошки» являются частью дизайна отдельных блоков/компонентов, т.е их не получается вынести в самостоятельный блок сайта не зависящий от страницы на которой будет находиться пользователь.
При вёрстке таких шаблонов в CMS Bitrix приходиться использовать компонент bitrix:breadcrumb внутри других компонентов, например: bitrix:news или bitrix:catalog. Так как bitrix:breadcrumb использует отложенные функции, то при включённом кэширование «разваливается/ломается» вёрстка страниц на которых присутствуют «хлебные-крошки».
Вызов компонента bitrix:breadcrumb
Отличное решение для этой проблемы было предложено пользователем Хабра — https://habr.com/sandbox/115802/. Ниже собственно и привожу это решение.
Посмотрим на то, как взаимодействует компонент с файлом component_epilog.php (https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2975). Как видно component_epilog.php подключается после исполнения шаблона и позволяет его модифицировать.
Решение предложенной пользователем Хабр’а сводиться к тому, чтобы в шаблоне располагать placeholder, который при выполнении component_epilog.php будет заменяться на нужный нам контент. ( в данном случаи на «хлебные-крошки»).
Для реализации задачи потребуется создать класс, например ComponentHelper. В папке /bitrix/php_interface/ создадим папку /class/ в ней нужно создать файл ComponentHelper.php со следующим содержимым:
Чтобы вывести хлебные крошки, понадобится создать функцию, например ShowNavChain в файле init.php.
Строки необходимые добавить в файл init.php ( располагается в /bitrix/php_interface/ )
В шаблоне в котором необходим вывод «хлебных-крошек» необходимо разместить следующий код:
В папке шаблона создаём файл component_epilog.php с содержимым:
Если всё сделано правильно, теперь «хлебные-крошки» будут отображаться корректно внутри вашего шаблона.
Источник