5.9 KiB
Шаблоны сайта
← К разделу «Как собирается сайт»
Шаблон сайта — внешняя оболочка готовой страницы. Он содержит HTML-документ, метаданные, общую шапку, навигацию, место основного содержимого и подвал.
Минимальный контракт
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>[tag:title]</title>
<meta name="description" content="[tag:description]">
<meta name="robots" content="[tag:robots]">
<link rel="canonical" href="[tag:canonical]">
[tag:rubheader]
</head>
<body>
[tag:navigation:main]
[tag:maincontent]
[tag:sysblock:footer]
[tag:rubfooter]
</body>
</html>
Обязательный смысловой тег — [tag:maincontent]. Без него документ будет найден
и обработан, но содержимое рубрики не попадёт на страницу.
Что размещать в шаблоне
- общий
<head>, CSS и JavaScript темы; - шапку и подвал;
- общую навигацию;
- системные блоки, одинаковые для многих страниц;
- SEO-теги текущего документа;
- места для header/footer-вставок рубрики.
Карточку конкретной статьи или товара размещайте в шаблоне рубрики. Списки документов принадлежат запросам или каталогу. Это уменьшает количество условий в глобальной оболочке.
Палитра тегов
Палитра строится из реестра и показывает актуальные блоки, навигации, запросы и системные значения. После выбора тег вставляется в текущую позицию редактора, а панель закрывается.
Предпочитайте alias вместо числового ID:
[tag:navigation:main]
[tag:request:latest_news]
[tag:sysblock:footer]
Так шаблон легче переносить между установками, если системные ID различаются.
Модульные Twig-компоненты
Сложный модуль может вернуть HTML из внутреннего Twig-шаблона, но в шаблон сайта он всё равно вставляется обычным зарегистрированным тегом:
[mod_search]
[mod_basket:mini]
Не указывайте путь к Twig-файлу непосредственно в шаблоне. Перед созданием нового компонента проверьте, нельзя ли решить задачу рубрикой, запросом, блоком, навигацией или существующим модульным тегом. Полный контракт описан в главе «Точечные Twig-компоненты».
PHP и проверка
Шаблон может содержать проектный PHP, но ошибка нарушит все страницы, которые его используют. Перед сохранением запускайте проверку синтаксиса. Общую бизнес-логику лучше держать в сервисах и hooks, оставляя в шаблоне композицию и небольшие условия.
Не выполняйте запросы к БД в цикле карточек. Подготовьте данные запросом, каталогом, блоком или сервисом до рендера.
Сохранение и кеш
Источник шаблона хранится в БД. После сохранения система атомарно обновляет
файловый кеш публичного рендера. Путь кеша является внутренней деталью; не
редактируйте .inc вручную, иначе следующее сохранение перезапишет изменения.
Кнопка пересборки кеша создаёт файлы заново из БД. Она нужна после переноса, восстановления файлов или диагностики, а не после каждого обычного сохранения.
Ревизии
При создании, сохранении, копировании, импорте и восстановлении создаются ревизии. Восстановление сначала сохраняет текущее состояние как резервное, затем применяет выбранный снимок и обновляет кеш.
Шаблон №1 системный и не удаляется. Другой шаблон нельзя удалить, пока его использует хотя бы одна рубрика.
Порядок изменения дизайна
- Создайте копию шаблона.
- Назначьте её тестовой рубрике или документу.
- Проверьте обычную страницу, 404, пагинацию, формы и авторизованное состояние.
- Проверьте мобильную ширину и отсутствие горизонтальной прокрутки.
- После проверки переключите рабочие рубрики.
- Старый шаблон удаляйте только после периода наблюдения.