Перейти к содержимому

Шаблон сайта не применяется - разбор причин

Правки шаблона не видны на сайте или показывается совсем не тот дизайн. Разбираем причины по убыванию частоты, начиная с имени текущего шаблона.

С чего начать

Печатаем имя и путь текущего шаблона:

printf("шаблон=%s путь=%s\n", SITE_TEMPLATE_ID, SITE_TEMPLATE_PATH);
// строку временно ставят в подвал: она сразу называет виновника

Имя текущего шаблона отвечает на половину вопросов. Если оно не то, разбор идёт по правилам показа, а если то - смотрят каталог, в котором лежат правки.

Ищем копии шаблона в разных каталогах:

Окно терминала
find /home/bitrix/www -maxdepth 4 -type d -name 'main' -path '*templates*'
# шаблон из своего каталога перекрывает одноимённый шаблон каталога ядра

Правка одноимённого шаблона в каталоге ядра - классическая потеря времени. Файл меняется, страница остаётся прежней, потому что платформа берёт шаблон из своего каталога проекта.

Проверяем, не отдаётся ли страница из кэша готовых страниц:

Окно терминала
curl -sI https://example.com/ | grep -iE 'x-bitrix-composite|cache-control'
# страница из композита показывает вёрстку, собранную до правок шаблона

Смотрим, подключились ли стили шаблона:

Окно терминала
curl -s https://example.com/ | grep -oE 'href="[^"]*template_styles[^"]*"' | head
# пустой ответ означает, что стили шаблона не подключены вовсе

Проверяем шапку и подвал на ошибки:

Окно терминала
php -l /home/bitrix/www/local/templates/main/header.php
php -l /home/bitrix/www/local/templates/main/footer.php
tail -20 /var/log/nginx/error.log # там же видно фатальные ошибки страницы
# ошибка в шапке рвёт страницу целиком, а вывод обрывается на середине

Причины

  1. Сработало другое правило показа шаблона примерно 30% случаев

    ПризнакНа части страниц дизайн один, на других другой, хотя правили один шаблон.

    ПроверкаПечатаем имя текущего шаблона на проблемной странице и сверяем с правилами показа.

    Что делатьПравим порядок правил показа: побеждает первое подходящее, а общее правило ставят последним.

  2. Правится копия шаблона в другом каталоге примерно 20% случаев

    ПризнакФайл шаблона изменён, а страница выглядит ровно как прежде.

    ПроверкаИщем одноимённые каталоги шаблона в своём каталоге проекта и в каталоге ядра.

    Что делатьПереносим правки в шаблон своего каталога: именно он перекрывает одноимённый шаблон ядра.

  3. Страница отдаётся из кэша готовых страниц примерно 20% случаев

    ПризнакПервый заход показывает старую вёрстку, обновление страницы иногда помогает.

    ПроверкаСмотрим служебные заголовки ответа и проверяем страницу с выключенным композитом.

    Что делатьСбрасываем кэш готовых страниц после правок шаблона или исключаем страницу из него.

  4. Стили и скрипты шаблона не подключились примерно 15% случаев

    ПризнакРазметка на месте, а оформление отсутствует полностью или частично.

    ПроверкаИщем подключение файлов шаблона в исходном коде страницы и смотрим их адреса.

    Что делатьПодключаем файлы средствами платформы и указываем пути от каталога текущего шаблона.

  5. Ошибка в шапке или подвале шаблона примерно 15% случаев

    ПризнакСтраница обрывается на середине или белеет после правки шаблона.

    ПроверкаПроверяем синтаксис файлов шаблона и смотрим журнал ошибок веб-сервера.

    Что делатьЧиним ошибку в файле шаблона: до неё страница выводится, после - обрывается.

Частые вопросы

Где должен лежать свой шаблон сайта?

В каталоге шаблонов своего каталога проекта, а не среди штатных. Так обновление продукта не затрёт вёрстку и правки переживают переустановку.

Почему на одной странице дизайн другой?

Для неё сработало другое правило показа шаблона. Правила проверяются по порядку, и первое подходящее выигрывает.

Как быстро проверить, дело в кэше или нет?

Открыть страницу с параметром, отключающим кэш готовых страниц, и сравнить. Разница сразу показывает, где искать дальше.

Почему стили не подключились после переноса?

Пути к файлам записаны относительно старого каталога шаблона. Их собирают от константы пути текущего шаблона, а не пишут строкой.

Можно ли править штатный шаблон продукта?

Технически да, но обновление вернёт его в исходный вид. Свою вёрстку держат в копии шаблона в каталоге проекта.

Смежное

Первоисточник