Кабинет

#Как устроены шаблоны

Шаблон (тема) — это вёрстка сайта, упакованная так, чтобы её можно было поставить кнопкой. Тема не содержит кода: она описывает, как выглядят модули, и какие настройки нужны её разметке.

#Состав архива

moya-tema.zip
  theme.json          обязателен
  demo.json           необязателен — примеры содержимого
  preview.png         картинка для карточки в панели
  assets/style.css    стили
  assets/script.js    скрипты
  packages/           своё решение темы, если нужно

Можно паковать и папкой внутри (moya-tema/theme.json) — найдётся.

Важно

Кода в теме быть не должно. Файлы .php, .phtml, .sh, .htaccess и подобные отклоняются с объяснением: тема — это вёрстка, а чужой код на сайте означает чужой код на сайте. Пределы: 64 МБ распакованного, 2000 файлов.

#theme.json

{
  "code": "moya-tema",
  "name": "Моя тема",
  "version": "1.0.0",
  "author": "Студия",
  "requires_packages": ["block", "portfolio", "form"],
  "settings": [
    { "name": "phone", "title": "Телефон", "type": "phone" }
  ],
  "views": [
    { "module": "portfolio", "code": "moya.portfolio",
      "html": "<div class=\"grid\">{item}</div>",
      "item_html": "<article>{module.portfolio.zagolovok}</article>" }
  ]
}
КлючЧто задаёт
codeимя темы: латиница, цифры, дефис, с буквы
versionровно три числа. Не вырастили — обновление не предложится
requires_packagesрешения, на которых держится вёрстка
bundled_packagesсвоё решение, привезённое темой
settingsполя, которые появятся в «Настройки сайта»
viewsвёрстка модулей — главное в теме

#Три страницы про темы

#requires_packages — решения, на которых стоит тема

Перечислите здесь всё, чьи модули использует вёрстка. При установке система сама:

  1. поставит недостающие решения — в облаке они входят в тариф;
  2. включит те, что стоят, но выключены — иначе их справочники спрятаны, слушатели молчат, и блоки темы окажутся пустыми;
  3. и только потом уложит виды.
Частая ошибка

Забыть решение в этом списке — самая частая причина «тема встала, а блок пустой»: вёрстка ссылается на модуль, которого на сайте нет.

#Что проверяется по форме

ЧтоПравилоПример
код темылатиница, цифры, дефис; с буквыmoya-tema
версияровно три числа1.0.0
код видалатиница, цифры, точка, дефис, подчёркивание; заглавные можноmoya.menuItem
модуль у виданепустая строкаportfolio
код решениялатиница, цифры, дефис; точка нельзяmoya-blog
решение темыначинается с кода темы и дефисаmoya-tema-portfolio
core_versionограничение со знаком>=1.0.0
пути файловлатиница, цифры, точка, дефис, подчёркиваниеassets/style.css
имя настройкине id и не domain — они служебныеsite_url
Примечание

Про заглавные в коде вида отдельно: они законны и нужны. Код обычно повторяет имя модуля, а среди модулей есть menuItem. Правило, запрещающее заглавные, отвергло бы и его.

#Счётчики и чужой код в шапке

В голове документа положено оставить два места:

{before_head_close_code}
</head>

<body>
{after_body_open_code}

Сюда владелец кладёт из панели Метрику, GTM, пиксель, код верификации поисковика — что угодно и сколько угодно. Поля называются по месту вставки, а не по имени счётчика: вёрстка знает только «перед </head>» и «сразу после <body>».

Важно

Старые метки {yandex_metrika}, {google_tag_head}, {google_tag_body} отменены. Их значения лежали в файле настроек, куда владелец сайта не дотягивается, а третьему счётчику места не было вовсе. Оставшаяся в теме такая метка просто вычистится.

При замере скорости (Lighthouse) содержимое обоих полей не выводится: иначе оценка говорила бы о расторопности чужих серверов, а не о вашей вёрстке.

#Как проверить готовую тему

Соберите zip, загрузите через Шаблоны → Загрузить тему из архива, нажмите Применить. Не хватает решения, справочника или поля — установка скажет, чего именно, и не сделает половину работы.

#Что чаще всего идёт не так

«Тема встала, а блок пустой». Решение, чей модуль зовёт вёрстка, не перечислено в requires_packages и потому не установлено.

«Метки в карточках не подставились». В item_html написано {item.поле} — такой формы в движке нет. Правильно {module.имя_модуля.поле}.

«Текст страниц пропал». В виде модуля page нет метки {module.page.content}.

«Обновил тему — на сайте старая вёрстка». Виды, которые владелец правил, обновление не трогает: новая вёрстка легла в «исходный код». Нужно нажать «Вернуть исходный код» у нужного вида.

«Настройка не читается». Имя настройки id или domain — они служебные. Возьмите другое: для адреса сайта site_url.

«Архив не загружается». Внутри есть файлы с кодом, кириллические имена файлов, нет theme.json или версия записана не тремя числами.