> For the complete documentation index, see [llms.txt](https://docs.johncms.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.johncms.com/10.0/shablony/struktura-standartnogo-shablona.md).

# Структура стандартного шаблона

Шаблоны располагаются в папке **themes**, а их собранные стили, скрипты и картинки — в **public/themes**.

Обычно шаблон для JohnCMS имеет следующую структуру:

* themes
* * template\_name
  * * src
    * templates
    * theme.php
* public
* * themes
  * * template\_name
    * * assets

Обязательных папок нет: тема может состоять из одного файла — например, только из переопределённого шаблона главной страницы. Всё, чего в ней нет, берётся из родительской темы, а затем из **default** и из самого модуля.

Файл **theme.php** — манифест темы. В нём указываются название, родительская тема (`parent`), точки входа сборки (`entries`) и настройки. Тема без манифеста считается наследницей **default**.

Внутри **templates** структура повторяет структуру того, что тема переопределяет:

* `templates/layouts/` — макеты страниц сайта (`@theme/layouts/…`)
* `templates/components/` — общие компоненты: алерты, пагинация, редактор и т.д.
* `templates/pages/` — системные страницы: результат действия, ошибки 403 и 404
* `templates/admin/` — вёрстка админ-панели (`@admin/…`)
* `templates/emails/` — шаблоны писем
* `templates/имя_модуля/` — переопределённые шаблоны конкретного модуля

{% hint style="info" %}
Папка **assets** лежит отдельно от остального шаблона потому, что корнем сайта (document root) является папка **public** — только её содержимое отдаётся браузеру. Исходники (**src**) и шаблоны страниц (**templates**) остаются вне доступа из веба.
{% endhint %}

#### Что такое шаблон в JohnCMS?

С точки зрения структуры шаблоном является любая папка в папке **/themes**\
В этой папке есть тема по умолчанию - **default**\
В этой теме находятся все необходимые для работы файлы по умолчанию: шаблоны, стили, картинки, скрипты и т.д.\
Также, каждый отдельный модуль может иметь свою папку с шаблонами **modules/<вендор>/<модуль>/templates**, а его собранные стили и скрипты при установке попадают в **public/modules/<алиас>**.

{% hint style="info" %}
Для частичной кастомизации стандартного шаблона, вы можете создать свою тему только с теми файлами, которые хотите изменить. При создании темы, просто сохраните такое же расположение нужного файла в папке с вашей кастомной темой. Более подробно про создание собственных тем, читайте на соответствующей странице.
{% endhint %}
