- Не корректная работа хлебных крошек
- Битрикс — Как добавить в хлебные крошки название если это страница а не раздел
- Как добавить в хлебные крошки элемент на 1С-Битрикс
- автор: Dmitriy
- Breadcrumbs
- Битрикс. Хлебные крошки
- Управление навигационной цепочкой
- Показ навигационной цепочки
- Управление шаблоном навигационной цепочки
- Компонент «Навигационная цепочка»
- Битрикс — Как добавить в хлебные крошки название если это страница а не раздел
- Как добавить в хлебные крошки элемент на 1С-Битрикс
- автор: Dmitriy
Не корректная работа хлебных крошек
Приветствую.
На сайте имеется несколько страниц, идентичные по структуре. Все они выводят элементы одного из инфоблоков, с небольшой разницей по фильтру. Допусти, есть три страницы : каталог, новинки и скидки. Вывод элементов производится компонентом 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»,
Помогите пожалуйста разобраться в чем проблема, почему в каталоге, который является аналогичным «новинкам» и «скидкам» не отображает крошки без дополнительных строк кода и как сделать, чтобы на станице товара они отображались в виде Главная страница -> Каталог -> Трансмиссия — > Звезды задние стальные -> товар .
Источник
Битрикс — Как добавить в хлебные крошки название если это страница а не раздел
Эта небольшая заметка поможет решить проблему хлебных крошек в битриксе. Стандартно названия берутся именно из свойства раздела, исправляем это всего в 3 строки.
Как добавить в хлебные крошки элемент на 1С-Битрикс
Рассмотрим один из способов, как добавить имя страницы в хлебные крошки. На проекте были не только динамические разделы (например /catalog/ или /news/), которые используют инфоблоки, но также отдельные физические страницы (например /about/info.php).
Чтобы добавить в самый конец навигационной цепочки имя страницы воспользуемся следующим кодом:
А теперь по порядку, что тут происходит — мы проверяем имеет ли страница расширение .php ($_SERVER[‘PHP_SELF’] — Имя файла скрипта, который сейчас выполняется, относительно корня документов ). После этого воспользуемся методом AddChainItem, который добавляет в самый конец цепочки наш заголовок. Заголовок мы берем с глобального объекта $APPLICATION, в котором заголовок страницы уже лежит.
Сам код добавлять в footer.php вашего шаблона (хотя вариативность большая, в том числе написать проверку любым другим способом).
Что находится внутри метода AddChainItem:
Первый параметр это заголовок, второй это ссылка (если нужна), а третий это конвертация хтмл символов в более читаемые (обратите внимание, параметр по умолчанию стоит в true).
Надеюсь эта статья была вам полезна, делитесь в комментариях своими решениями и удачи вам в разработке 🙂
автор: Dmitriy
Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.
— Создание сайтов на 1С-Битрикс любой сложности
— Вёрстка макетов Figma, Photoshop, Zeplin
— Поддержка проектов на Битриксе
— Разработка нового функционала для сайта
— Парсинг данных
— Выгрузка из файлов в формате XML, YML, XLS, XLSX, CSV, JSON
— Интеграция по API со сторонними сервисами
и многое другое
Источник
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 — Купить желтое кресло, в крошках — Желтое кресло
Источник
Битрикс. Хлебные крошки
Цепочка навигации — последовательный список ссылок на разделы и страницы сайта, который показывает уровень «погружения» текущей страницы в структуру сайта. Значения, подставляемые в навигационную цепочку, могут быть заданы как для каждого раздела, так и для отдельного документа.
По умолчанию в Битрикс используется механизм управления названиями пунктов навигационной цепочки через свойства разделов. Заголовок раздела сайта задается в служебном файле .section.php , который находится в соответствующем разделе. В данном файле могут быть использованы следующие переменные:
- $sSectionName — заголовок раздела;
- $sChainTemplate — абсолютный путь к шаблону навигационной цепочки (данная переменная используется крайне редко)
Для того, чтобы ссылка на какой-либо раздел не выводилась в навигационной цепочке сайта, нужно удалить название раздела из поля «Заголовок» в визуальном редакторе или отредактировать файл .section.php :
Управление навигационной цепочкой
С помощью метода AddChainItem() в цепочку навигации могут быть добавлены дополнительные пункты. Первым параметром задается название, которое будет показано в навигационной цепочке, вторым параметром задается ссылка для перехода:
Некоторые пункты навигационной цепочки могут не содержать ссылки на какой-либо раздел или документ сайта, т.е. могут быть представлены в виде обычного текста (например, название текущей страницы). Такие пункты создаются путем добавления в шаблон показа навигационной цепочки следующего кода:
Чтобы выводить в навигационную цепочку название текущей страницы, необходимо вставить вызов метода AddChainItem() в файле footer.php , т.е. после вывода содержимого рабочей области.
Показ навигационной цепочки
Показ навигационной цепочки выполняется с помощью метода ShowNavChain() в шаблоне сайта, в коде страницы или в коде отдельных компонентов. Метод использует технологию отложенных функций, позволяющую добавлять пункты в навигационную цепочку уже после того, как был выведен пролог сайта.
Отложенные функции — технология, позволяющая задавать заголовок страницы, пункты навигационной цепочки, CSS стили, дополнительные кнопки в панель управления, мета-теги и т.п. с помощью функций, используемых непосредственно в теле страницы. Соответствующие результаты работы этих функций выводятся в прологе, то есть выше по коду, чем они были заданы.
Технология была создана в первую очередь для использования в компонентах, которые, как правило, выводятся в теле страницы, но при этом внутри них могут быть заданы заголовок страницы, добавлен пункт в навигационную цепочку, добавлена кнопка в панель управления и так далее. Отложенные функции нельзя использовать в файлах шаблона компонента template.php и result_modifier.php (так как результаты их выполнения кешируются).
Показ навигационной цепочки может быть отключен на определенных страницах или в определенном разделе сайта. Управление отображением навигационной цепочки также осуществляется с помощью свойств страницы (раздела). Для этого необходимо:
- На странице настроек модуля «Управление структурой», секция «Настройки для сайтов», создать свойство для страниц «Не показывать навигационную цепочку» с кодом not_show_nav_chain
- Если навигационная цепочка не должна отображаться на определенной странице или страницах какого-либо раздела, то для этой страницы или раздела нужно установить значение данного свойства равным Y
Кроме того, значение свойства «Не показывать навигационную цепочку» может быть задано непосредственно в коде страницы с помощью метода SetPageProperty() :
Управление шаблоном навигационной цепочки
Алгоритм построения цепочки навигации и формирования ее внешнего вида:
- Сбор пунктов навигационной цепочки ведется начиная от корня сайта и заканчивая текущим разделом. Для каждого очередного раздела подключается файл .section.php . Если в данном файле будет инициализирована переменная $sChainTemplate , то ее значение будет использовано в качестве пути к шаблону навигационной цепочки. В процессе перебора разделов, каждое последующее значение этой переменной перетирает предыдущее.
- Если после сбора пунктов навигационной цепочки путь к шаблону не определён, то проверяется существование файла Если такой файл существует, то путь к нему и принимается за путь к шаблону навигационной цепочки, в противном случае используется значение по умолчанию
Шаблон навигационной цепочки при ее выводе будет подключаться каждый раз на очередном пункте цепочки. Поэтому основная его задача — обеспечить внешний вид только одного пункта цепочки.
Основными переменными, используемыми в шаблоне, являются:
- $sChainProlog — HTML код выводимый перед навигационной цепочкой
- $sChainBody — HTML код определяющий внешний вид одного пункта навигационной цепочки
- $sChainEpilog — HTML код выводимый после навигационной цепочки
- $strChain — HTML код всей навигационной цепочки собранный к моменту подключения шаблона
Вышепредставленные переменные будут хранить в себе HTML-код, который определит внешний вид навигационной цепочки. Также в шаблоне будут доступны следующие дополнительные переменные:
- $TITLE — заголовок очередного пункта навигационной цепочки
- $LINK — ссылка на очередной пункт навигационной цепочки
- $arCHAIN — копия массива элементов навигационной цепочки
- $arCHAIN_LINK — ссылка на массив элементов навигационной цепочки
- $ITEM_COUNT — количество элементов массива навигационной цепочки
- $ITEM_INDEX — порядковый номер очередного пункта навигационной цепочки
Пример файла шаблона навигационной цепочки chain_template.php :
Компонент «Навигационная цепочка»
Пример вызова компонента:
Создадим свой шаблон с именем chain в папке общего шаблона сайта .default :
Источник
Битрикс — Как добавить в хлебные крошки название если это страница а не раздел
Эта небольшая заметка поможет решить проблему хлебных крошек в битриксе. Стандартно названия берутся именно из свойства раздела, исправляем это всего в 3 строки.
Как добавить в хлебные крошки элемент на 1С-Битрикс
Рассмотрим один из способов, как добавить имя страницы в хлебные крошки. На проекте были не только динамические разделы (например /catalog/ или /news/), которые используют инфоблоки, но также отдельные физические страницы (например /about/info.php).
Чтобы добавить в самый конец навигационной цепочки имя страницы воспользуемся следующим кодом:
А теперь по порядку, что тут происходит — мы проверяем имеет ли страница расширение .php ($_SERVER[‘PHP_SELF’] — Имя файла скрипта, который сейчас выполняется, относительно корня документов ). После этого воспользуемся методом AddChainItem, который добавляет в самый конец цепочки наш заголовок. Заголовок мы берем с глобального объекта $APPLICATION, в котором заголовок страницы уже лежит.
Сам код добавлять в footer.php вашего шаблона (хотя вариативность большая, в том числе написать проверку любым другим способом).
Что находится внутри метода AddChainItem:
Первый параметр это заголовок, второй это ссылка (если нужна), а третий это конвертация хтмл символов в более читаемые (обратите внимание, параметр по умолчанию стоит в true).
Надеюсь эта статья была вам полезна, делитесь в комментариях своими решениями и удачи вам в разработке 🙂
автор: Dmitriy
Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.
— Создание сайтов на 1С-Битрикс любой сложности
— Вёрстка макетов Figma, Photoshop, Zeplin
— Поддержка проектов на Битриксе
— Разработка нового функционала для сайта
— Парсинг данных
— Выгрузка из файлов в формате XML, YML, XLS, XLSX, CSV, JSON
— Интеграция по API со сторонними сервисами
и многое другое
Источник