Как объединить header у всех шаблонов 1C-Битрикс?

Сижу разбираюсь в чужом 1С-Битрикс сайте\коде.

Хочу немного изменить оформление. До меня наконец дошло благодаря документации что в битрикс не один шаблон как обычно для всего сайта, а куча разных шаблонов для разных страниц. По крайней мере так сделал разработчик до меня.

  • /local/templates/index/ - для главной страницы
  • /local/templates/main/ - для других страниц
  • /local/templates/fullscreen_services/ - для страниц услуг
  • /local/templates/detail/ - для контактов и тд.


Но дело в том что большая часть этих страниц, особенно footer.php и header.php почти одинаковые. Отличие бывает в 1-2 .js, .css файла. И чтобы внести правку в или мне нужно менять файл во всех шаблонах. Геморой какой-то.

Это страдание разработчиков Битрикс или есть правильно решение? Есть какой-то общий файл header.php/footer.php куда я могу прописать все 1 раз. И как мне по условию id страницы или её типа может или еще какого параметра подгружать точечно нужные мне скрипты?
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
До меня наконец дошло благодаря документации что в битрикс не один шаблон как обычно для всего сайта, а куча разных шаблонов для разных страниц.

Это не совсем так. Как правило шаблон один. Но можно сделать и свой для каждой страницы.

Но дело в том что большая часть этих страниц, особенно footer.php и header.php почти одинаковые. Отличие бывает в 1-2 .js, .css файла.

Если отличия только в подключаемых файлах, то совершенно не правильно делать шаблоны различные для страниц. Шаблон должен быть один, а js и css классически должны подключаться компонентами которым они нужны или в крайнем случае на самих страницах.

Это страдание разработчиков Битрикс или есть правильно решение?

Есть. Описал выше.

Есть какой-то общий файл header.php/footer.php куда я могу прописать все 1 раз.

Ничто не мешает вам их сделать. Например многие размещают такие файлы в /local/layout и инклюдят внутри разных шаблонов в их header.php/footer.php
Я еще иногда помещаю их в /local/templates/.default

И как мне по условию id страницы или её типа может или еще какого параметра подгружать точечно нужные мне скрипты?

Это не нужно. Подключайте в сами страницах с помощью Asset::getInstance()->addJs("/my_scripts.js");
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы