Files
2026-07-27 12:58:44 +03:00

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 системный и не удаляется. Другой шаблон нельзя удалить, пока его использует хотя бы одна рубрика.

Порядок изменения дизайна

  1. Создайте копию шаблона.
  2. Назначьте её тестовой рубрике или документу.
  3. Проверьте обычную страницу, 404, пагинацию, формы и авторизованное состояние.
  4. Проверьте мобильную ширину и отсутствие горизонтальной прокрутки.
  5. После проверки переключите рабочие рубрики.
  6. Старый шаблон удаляйте только после периода наблюдения.