Bitrix. Убрать вложенность URL в разделе

Когда работаешь с технической поддержкой сайта, то очень часто прилетают задачи, которые слегка (или даже полностью) противоречат основам работы системы управления сайта.
Одна из таких задач для меня (и притом одна из самых актуальных) – сделать все ссылки на сайте от корня.
И не то, чтобы я против. Скорее против Битрикс :) Но убрать вложенность URL все же можно. Хотя самый безопасный способ будет для случая, если мы это делаем для одного-единственного раздела сайта, а у остальных вложенность URL сохраняется.


Дано: раздел с комплексным компонентом (catalog или news). Я буду описывать все для компонента catalog, так как самым частым запросом является как раз убрать catalog из URL.

  1. Меняем настройки инфоблока. Убираем /catalog из настроек URL. Делаем это для того, чтобы изменились ссылки в меню и других компонентах, где мы явно не указываем, по какому правилу формировать URL.
  2. Меняем вызов компонента:
  3. Редактируем urlrewrite.php. Изменяем правило для нужного нам раздела (у меня это catalog) и ставим его последним в списке.

Вот и все!

Важный момент: если вы попробуете настроить правила для разделов и элементов просто как коды, то Битрикс это не оценит :) К сожалению, он не умеет различать сущности, поэтому для него такие правила будут идентичны и он все будет воспринимать как элементы (либо как разделы), а все прочие страницы будет отдавать с 404 ошибкой.
Это тоже можно побороть, конечно, отключив 404 ошибку в вызове компонента и добавив недостающие обработки в соответствующие файлы шаблона. Но это уже совсем другая история :)

Комментарии

  1. Здравствуйте. Подскажите такой вопрос.
    По этому пути работает всё и открывает каталог и страницы продукта.
    Адрес такой для категорий https://site.ry/catalog/SECTION_CODE1/SECTION_CODE2/SECTION_CODE3
    А для Прадуктов https://site.ry/catalog/SECTION_CODE/ELEMENT_CODE

    URL страницы информационного блока: #SITE_DIR#/catalog/

    URL страницы раздела: #SITE_DIR#/catalog/#SECTION_CODE_PATH#/

    URL страницы детального просмотра: #SITE_DIR#/catalog/#ELEMENT_CODE#/


    Или так работает и открывает:
    Адрес такой для категорий https://site.ry/catalog/SECTION_CODE (в которой находишся).
    А для Прадуктов https://site.ry/catalog/SECTION_CODE/ELEMENT_CODE

    URL страницы информационного блока: #SITE_DIR#/catalog/

    URL страницы раздела: #SITE_DIR#/catalog/#SECTION_CODE#/

    URL страницы детального просмотра: #SITE_DIR#/catalog/#SECTION_CODE#/#ELEMENT_CODE#/



    Вопрос как я могу сделать или какое правило подскаите прописать
    Чтобы и категории так же открывались как и продукты только последняя категория.
    То есть если я делаю так:

    URL страницы информационного блока: #SITE_DIR#/catalog/

    URL страницы раздела: #SITE_DIR#/catalog/#SECTION_CODE#/ (БЕЗ _PATH)

    URL страницы детального просмотра: #SITE_DIR#/catalog/#ELEMENT_CODE#/

    То категория работает как нужно а вот продукт не открываеться пишет не найдена.
    Можете подсказать что я делаю не так или чего-то не хватает. Может правило прописать нужно како.
    Как можно исправить?

    Нужно сдедать так:
    Адрес такой для категорий https://site.ry/catalog/SECTION_CODE (в которой находишся).
    А для Прадуктов https://site.ry/catalog/ELEMENT_CODE
    Но вот продукт открываться не хочет.

    ОтветитьУдалить
    Ответы
    1. Когда вы указываете
      URL страницы раздела: #SITE_DIR#/catalog/#SECTION_CODE#/
      URL страницы детального просмотра: #SITE_DIR#/catalog/#ELEMENT_CODE#/

      то Битрикс при разборе урл, получает лишь один код после /catalog/ и первым в списке идет правило для раздела, поэтому либо вам нужно в коде файла section.php разрешать этот вопрос и подключать вручную файл element.php, или делать правила разбора урл для разделов и элементов уникальными. Например:
      URL страницы раздела: #SITE_DIR#/catalog/#SECTION_CODE#/
      URL страницы детального просмотра: #SITE_DIR#/catalog/#ELEMENT_CODE#.html

      или
      URL страницы раздела: #SITE_DIR#/catalog/#SECTION_CODE#/
      URL страницы детального просмотра: #SITE_DIR#/catalog/product/#ELEMENT_CODE#/

      Удалить

Отправить комментарий

Популярные сообщения