Bitrix addchainitem не работает

Не корректная работа хлебных крошек

Приветствую.
На сайте имеется несколько страниц, идентичные по структуре. Все они выводят элементы одного из инфоблоков, с небольшой разницей по фильтру. Допусти, есть три страницы : каталог, новинки и скидки. Вывод элементов производится компонентом 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).

Читайте также:  Php nl2br не работает

Надеюсь эта статья была вам полезна, делитесь в комментариях своими решениями и удачи вам в разработке 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

— Создание сайтов на 1С-Битрикс любой сложности
— Вёрстка макетов Figma, Photoshop, Zeplin
— Поддержка проектов на Битриксе
— Разработка нового функционала для сайта
— Парсинг данных
— Выгрузка из файлов в формате XML, YML, XLS, XLSX, CSV, JSON
— Интеграция по API со сторонними сервисами
и многое другое

Источник

$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 со сторонними сервисами
и многое другое

Источник

Оцените статью