Как НЕ плодить шаблоны сайтов Битрикс: универсальность одного шаблона для множества сайтов

Всегда, если есть возможность использовать ОДИН шаблон сайта — всегда загоняйте принудительно свою компанию в один шаблон. Иначе, будет как у нас. Ниже я расскажу, как делать нельзя и кому руки поотрывать, если так сделано.

Ситуация: создано в битриксе кучу сайтов (не менее 20 подразделений), для каждого – свой шаблон сайта. Внутри шаблона сайта компоненты со своими шаблонами.
Проблема: разрозненность отображения однотипной информации на разных сайтах подразделений и множество шаблонов; увеличение места на сервере (преимущественно дублирование файлов с компонентами и их шаблонами).
Громоздкость: при создании нового сайта подразделения тянутся «кишки» из компонентов, вереница шаблонов, путаница. Нет гибкости при нововведениях (пройтись по 25 сайтам разных подразделений, чтобы вывести 1 свойство или «плюшку»).
Задача: собрать шаблоны в одно место, чтобы эти шаблоны были доступны как существующим сайтам подразделений, так и при создании нового сайта; обеспечить единство отображения у всех подразделений и гибкость настроек в будущем (одно изменение применится на 25 сайтах сразу).
Решение без написания кода: добиться единого места хранения шаблонов – вынести все повторяющиеся в одно место битриксовое «умолчальное» /bitrix/components/bitrix/<имя_компонента>/templates/<имя_папки_с_шаблоном>/template.php
Небольшой программинг: я задалась целью сделать «универсальный» шаблон, т.е. максимально сократить количество шаблонов и использовать какой-то один для «типового» решения. Например, есть отдельно шаблон сайта главного и шаблон сайта подразделений. Т.к. Подразделений много, каждому надо прописать свой путь к логотипу, у каждого подразделения своё название и некий «стандарт» для размещения включаемых областей – новости, иконки, инфа в футтере.
Решение: внутри шаблона, так называемого «универсального» объявляем переменные, которые будут формировать пути к файлам. Файлы будем именовать с неким префиксом после имени, например: для иконок icons_<префикс>.php, для футтера footer_<префикс>.php  и так далее.

Создаётся сайт в настройках битрикса (имя сайта выводится по ID сайта и берётся из битрикса), папка сайта в корне сервера. Из этого всего тот самый префикс формируем путём получения корневой папки сайта: берём путь к корневой папке, обрезаем символы «/» по краям и получаем тот самый префикс для имён файлов. Значение префикса записываем в переменную, а в шаблоне одной строчкой вызываем поиск файла с нужным именем по указанному пути:

icons_’.$dir.’.php’   и   footer_’.$dir.’.php’

Теперь останется только положить в нужное место по 2 файла с нужными именами на каждое подразделение! Если подразделений 25 штук, то 50 файлов может и много, но если эти 50 файлов каждый весит по несколько байтов, то это существенно меньше, нежели 25 шаблонов сайтов с кодами компонентов и шаблонами к ним! В нашем случае один шаблон весил в среднем около 3 мегабайт в архиве *.tar. Несложно умножить 3 мегабайта на 25 штук… А если с учётом еженочных бэкапов… Дисковое пространство категорически нерационально забивается. Почему так? К сожалению, не было никакого опыта по внедрению битрикса ещё 5 лет назад. Поэтому делалось всё на коленке, в сжатые сроки и по мере выпиливания костылей. По прошествии лет моей инициативой стало максимально упростить себе работу по «конвееру» сайтов подразделений.

Год мозгового штурма в фоновом режиме – и решение найдено. Коды скоро опубликую.


Понравилась моя запись?
Кликни по рекламному баннеру ниже. Тебе бесплатно и не сложно, а мне - честный заработок блогом и приятное дополнение к энтузиазму на чашку кофе :-)