Включаемые области - файлы, области шаблона, правка менеджером
Выносим повторяющиеся куски страниц в области: телефон в шапке, текст под каталогом, баннер раздела - всё то, что меняет контент-менеджер без разработчика.
Решение
Выводим включаемую область:
$APPLICATION->IncludeFile('/include/phone.php', [], ['MODE' => 'html']);// путь считается от корня сайта, а не от каталога шаблона// файл живёт рядом с сайтом и правится из режима редактирования// третий аргумент включает кнопку правки прямо на страницеВключаемая область - это обычный файл, подключённый особым вызовом. Особый он тем, что платформа знает про этот файл и умеет показать рядом с ним кнопку правки для контент-менеджера.
Делаем область на раздел:
$APPLICATION->IncludeComponent('bitrix:main.include', '', [ 'AREA_FILE_SHOW' => 'sect', // область раздела, а не одной страницы 'AREA_FILE_SUFFIX' => 'inc', // ищется файл sect_inc.php 'AREA_FILE_RECURSIVE' => 'Y', // если своего нет, берётся от родителя 'EDIT_TEMPLATE' => 'standard.php',]);Область раздела ищется вверх по дереву каталогов. Один текст, положенный в корень каталога, показывается во всех его разделах, а раздел со своим файлом перекрывает общий.
Передаём блок из середины страницы в шапку:
// в шаблоне компонента или на самой странице$APPLICATION->SetViewTarget('under_title');echo '<div class="promo">Бесплатная доставка от 3000 рублей</div>';$APPLICATION->EndViewTarget();
// а в шаблоне сайта, выше по странице$APPLICATION->ShowViewContent('under_title');Содержимое отдаётся туда, где его показывают, независимо от порядка на странице. Это и есть способ вывести данные компонента в шапке, не таща запрос к базе в шаблон сайта.
Отдаём область контент-менеджеру:
- файлы областей лежат вне каталога платформы и переживают обновление- у группы контент-менеджеров должно быть право на запись в этот каталог- режим редактирования показывает кнопку правки прямо на страницеПравку области менеджер делает сам, из режима редактирования сайта. Если кнопка не появляется, дело почти всегда в правах на каталог, а не в самом вызове.
Одинаковые области стоит заводить одним файлом, а не копией на каждой странице. Телефон, продублированный в двенадцати областях, меняется ровно до тех пор, пока кто-нибудь не найдёт тринадцатую.
Область с PHP-кодом внутри выглядит удобно и стареет плохо. Всё, что сложнее разметки, живёт в компоненте, а область остаётся текстом, который безопасно править без разработчика.
Список областей проекта полезно держать в описании. Через год никто не помнит, какой файл рисует текст под каталогом, и правку начинают с поиска по всему сайту.
Типичные проблемы
Область поправили, а на сайте старый текст.
Страница отдаётся из кэша компонента или из композитной копии страницы. Кэш сбрасывают после правки области.
В нужном месте выводится пустота.
Содержимое области отдаётся условием, которое на этой странице не выполняется. Проверяют сам факт вызова, а не только вывод.
Кнопка правки не появляется у менеджера.
У его группы нет права на запись в каталог с файлами областей. Права проверяют на каталоге, а не на странице.
После обновления продукта области исчезли.
Их файлы лежали внутри каталога самой платформы. Такие файлы обновление возвращает в исходный вид.
Текст раздела показывается не во всех подразделах.
Область заведена без поиска вверх по дереву каталогов. Тогда каждый подраздел требует своего файла.
Частые вопросы
Чем это лучше обычного подключения файла?
Платформа знает про такой файл и даёт кнопку правки менеджеру. Обычное подключение этого не умеет.
Где хранить файлы областей?
В своём каталоге рядом с сайтом, вне каталога платформы. Тогда они переживут обновление продукта.
Можно ли класть в область PHP-код?
Технически да, но менеджер её потом не поправит. Логику держат в компоненте, а область оставляют текстом.
Как показать данные компонента в шапке?
Отдать их областью шаблона из компонента и показать выше по странице. Порядок на странице при этом не важен.
Смежное
-
Шаблон сайта на практике - оглавление подтемы
-
Карта с точками на сайте: данные, вывод, фильтр по городу - контакты и карта на странице
-
Баннеры и слайдеры: инфоблок или модуль рекламы - типовой блок для такой области
-
Натяжка вёрстки на шаблон сайта: разрез, пути, компоненты - куда попадают такие области при натяжке
-
Не удалось обнаружить код вызова компонента: разбор причин - разбор ошибки редактора на странице
-
Стили и скрипты в шаблоне: подключение, порядок, кэш - остальная обвязка сайта
-
Кнопки правки на витрине: режим правки, иконки области, меню элемента - правка данных прямо со страницы
-
Шаблон чужого компонента: копия, доработка результата, эпилог - откуда чаще всего отдают такие блоки
-
Правка не видна на сайте: какой кэш сбросить - почему правка области не доехала
-
Компоненты 2.0 - устройство компонентов целиком
-
Вывод дат на витрине: падежи, форматы сайта, относительное время - типовая надпись в шаблоне
-
Баннерная реклама: типы, таргетинг, показы - готовый механизм вместо области
-
Визуальный редактор: панель, сниппеты, чистка вставленного кода - чем менеджер правит содержимое области
-
Баннер не показывается: разбор причин - если в области пусто вместо рекламного блока