Мастер-класс настройки ЧПУ в «1С-Битрикс: Управление сайтом» - Часть 1
За последнюю неделю заметил на форуме несколько тем, в которых шло бурное обсуждение ЧПУ (человека-понятные ссылки на товары, страницы и т.п.) на отдельных компонентах каталога. Тема всегда оставалась сложной и каждый пытался в ней разобраться, как мог. Отвечать по этой теме сложно, а если подробно, то и неудобно в формате форума, поэтому родилась идея выпустить эту статью.
В 1С-Битрикс есть комплексный компонент управления каталогом bitrix.catalog в котором все достаточно просто, ставится он по умолчанию предварительно настроенный.
При всех его достоинствах в нем есть один недостаток, он поставляется как есть и может подойти не для всех.
А если нужна большая гибкость? Например, требуется сделать разделы, оформив их в своем дизайне или своей структурой представления информации. То начинаются танцы с отдельными компонентами каталога, на которых все это и собирается.
В начале я бы хотел разобрать более старую схему настройки, которая работала до последнего релиза 15.5 (первая часть статьи). А потом показать, что сделано в продукте в последнем 15.5 релизе, чтобы облегчить достаточно сложную настройку ЧПУ (вторая часть статьи).
- Требуется показать раздел, в котором будет своя уникальная страница раздела, файл ( index.php ).
- На всех страницах будет возможность переходить в подразделы данного раздела, файл ( list.php )
- При открытие каждого подраздела заголовок на странице подраздела должен изменится в соответствие с переходом в нужный подраздел
- Должна открываться карточка товара в рамках этого раздела или подраздела, файл ( detail.php ).
- Требуются хлебные крошки (навигационная цепочка в верхней части страницы), причем на основной странице раздела они не будут отображаться, а на всех подразделах и элементах будут.
Создание раздела файл index.php
- Создаем в корневом разделе сайта папку, например (что бы проще понимать для какого раздела эта папка, я взял для названия символьный код раздела): shop-for-confectioner
- Нам понадобится создать в этой папке три файла: index.php, list.php, detail.php
- Размещаем в этих файлах компоненты:
- В файл index.php добавляем компоненты: bitrix:catalog.section.list и bitrix:catalog.section
- В файле list.php добавляем компоненты: bitrix:catalog.section.list (не обязательный, если не нужна навигация на нижних уровнях), bitrix:news.detail (этим компонентом выведем заголовок раздела), bitrix:catalog.section и завершим все еще раз bitrix:news.detail (покажем SEO текст для раздела) - можно было бы упростить, но хочется показать некоторые моменты упрощающие жизнь под требования SEO специалистов и большую гибкость взаимодействия между компонентами.
- В файле detail.php добавляем компоненты: bitrix:catalog.section.list и bitrix:catalog.element . Можно сразу добавить схему, вида популярное в этом разделе, добавляем еще bitrix:catalog.section
Страницы созданы, компоненты размещены, приступаем к настройке. Нам понадобится инфоблок, в котором лежит наш прекрасный раздел со своими подразделами, который мы и будем выводить. Поехали.
Настройка главной страницы раздела
Давайте разберем настройку первого компонента, bitrix:catalog.section.list , с помощью него мы выведем навигацию по подразделам, нашего основного раздела.
Единственный кусочек в настройке, на который нужно обратить внимание, это указание URL задуманного нами ЧПУ . Он приведет нас к содержимому раздела.
Мы помним, что папка для раздела каталога называется у нас: shop-for-confectioner
А путь ЧПУ я хочу, что бы был вида: /shop-for-confectioner/название-подраздела/название-элемента/
Отлично, смотрим результат настройки:
Отобразились подразделы, в разделе над которым мы работаем.
Разберем настройку следующего компонента bitrix:catalog.section . Он выведет нам отобранный список элементов из всех подразделов нашего раздела. Например, выведем список элементов самых просматриваемых в данном разделе.
- URL ведущий на страницу с содержимым радела, прописывать путь к нашей папке.
- Нужно указать URL , который мы хотим видеть при выводе содержимого из раздела. Где SECTION_CODE - построит нам путь из подраздела, которые есть в нашем разделе. Например, у нас структура каталога /магазин кондитера/краски/элементы краски/ во всех разделах прописаны символьные коды, на основание которых и будет построен полный путь. Следующий элемент настройки ELEMENT_CODE выведем в ЧПУ символьный код элемента. Давайте посмотрим, где прописываются символьные коды у разделов и элементов (я покажу для раздела, для элемента схожий).
Естественно я не прописываю символьные коды вручную, пусть этим занимаемся платформа 1С-Битрикс. Для этого, при создание инфоблока, я включил соответствующую настройку:
Не буду подробно останавливаться на галочках данной настройки, тут интересна только одна « Использовать внешний сервис перевода », в ней я настраиваю перевод через Яндекс, указав ключ в настройках « Главного модуля ».
- Ну и последний элемент настройки, нужно указать, где передается код группы. Указываю тот же - SECTION_CODE
Отобразился список товаров из раздела.
Первая страница готова. Не пугайтесь, если она у вас не заработает, так как у меня сразу были настроены другие шаги, которые я пока не упоминал, но обязательно ниже опишу.Автоматически формируемый вывод подразделов
Страница раздела достаточно простая, она дает возможность вывести туда дополнительную информацию, баннеры с акциями для этого раздела, SEO тексты и т.п. они будут уникальные для этого раздела, но нам придется делать для каждого раздела свой набор файлов, что не всегда оправданно.
Вот пример уникального раздела, даже со своим дизайном: http://tortik39.ru/shop-for-confectioner/
А можно сделать автоматически формируемые данные для подраздела, гибкости будет меньше, но нужно будет создать набор файлов только один раз. Давайте разберем, как это делается для подразделов.
Настройка страницы отображения подразделов в разделе
Файл - list.php - первым компонентом в нем идет bitrix:catalog.section.list . Разбирать мы его не будем, так как он полностью повторяет настройки как и в файле index.php
А вот следующий компонент необычный - bitrix:news.detail . Этим компонентом, мы выведем из отдельного инфоблока заголовок выбранного подраздела, а его напарником ниже, содержимое SEO текста , которое описывает этот раздел. Это будет такая динамическая структура, которая будем меняться в зависимости от выбранных подразделов, в нашем разделе.
Прежде чем выводить заголовок и текст ниже, нам необходимо создать инфоблок, который будет это все хранить и показать как мы это свяжем.
Создаем инфоблок « Разделы каталога » - в нем нет свойств и каких либо специфичных настроек. Обычный инфоблок, с выключенной галочкой « торгового каталога ».
Инфоблок создан. Теперь в нем нужно создать столько записей, сколько у нас будет разделов, для которых мы выведем название и SEO текст внизу страницы подраздела или раздела.
Это все просто и работа скорей для копирайтера, а в нашу задачу войдет прописать правильные символьные коды, которые мы должны взять у подразделов нашего инфоблока каталога.
Идем в наш торговый каталог, в котором уже есть наши разделы с товарами и смотрим их символьные коды:
И на основание этих символьных кодов создаем записи в нашем новом инфоблоке с названиями и SEO текстом внутри, и с такими же символьными кодами. Ниже показаны созданные статьи и заголовки, которые нам пригодятся.
Давайте посмотрим одну такую запись внутри:
Название у нас будет заголовком раздела, для первого компонента: bitrix:news.detail . А текст мы разместим во вкладке « Подробно »:
Более « правильную » связь можно сделать, связав инфоблоки через свойство. И тогда не нужно будет контролировать одинаковость символьных кодов, но зато потребуется при создание элемента раздела каталога, выбирать что мы связываем с ним, в виде нашего элемента статьи. Оба вариант имеют свои плюсы и минусы, мне понравилось в данном случае более простое решение.
Самое сложное мы сделали, создали элементы в связном каталоге, проконтролировали, что каждый элемент имеет такой же символьный код, как и у раздела.
Приступаем к настройке bitrix:news.detail
Вся настройка сводится к тому, что бы выбрать наш инфоблок, где хранятся статьи, указать в поле « Код новости » следующий код: =
Этим кодом мы будем выбирать новость с таким же символьным кодом, который будет взят с символьного кода раздела.
Ну и напоследок, отключить все лишнее к выводу, фактически нам нужно вывести только заголовок.
Для второго компонента bitrix:news.detail , который выводится внизу страницы, мы делаем полностью аналогичную настройку. Только выводим вместо заголовка саму новость, наш SEO текст .
Давайте посмотрим, что у нас получилось и как это работает. Я записал небольшой видеоролик для показа динамики.
Получилось то, что нам требовалось.
Теперь нам нужно вывести список товаров из подраздела, нашего раздела, настроить компонент bitrix:catalog.section
Указываем в пункте « Код раздела » выражение =