<commit_before>---
layout: default
title: Файловая структура Cetera CMS
nav_order: 2
parent: Cetera CMS изнутри
grand_parent: Руководство разработчика
---

# Файловая структура Cetera CMS
```
<DOCUMENT_ROOT>
+---.prefs            — основные настройки CMS
+---.htaccess         — настройки прав доступа и url rewrite
+---robots.txt    
+---cms/                     — скрипты Cetera CMS
+---library/                 — сторонние библиотеки, используемые Cetera CMS
+---uploads/                 — каталог по умолчанию для файлов, загружаемых пользователями через интерфейс CMS
+---plugins/                 — каталог с дополнительными модулями
+---themes/                  — каталог с темами (редакциями)
+---.cache/                  — хранилище кэша
+---.templates/              — скрипты сайта
|   +---design/              — верстка 
|   |   +---layout.twig      — главный шаблон
|   |   +---page_index.twig  — шаблон главной страницы сайта
|   |   +---page_404.twig    — шаблон страницы 404
|   +---classes/             — пользовательские классы
|   +---widgets/             — шаблоны виджетов
|   +---default.php          — контроллер по умолчанию
|   +---bootstrap.php        — скрипт запускаемый перед выполнением любого контроллера
+---css/                     — стили
+---js/                      — javascripts
```

По умолчанию, все скрипты, отвечающие за логику работы сайта располагаются в каталоге *{% raw %}<DOCUMENT_ROOT>{% endraw %}/.templates*. Имеется возможность переопределить этот каталог персонально для каждого сервера, задав нужное значение в поле «Каталог» в свойствах сервера в интерфейсе Cetera CMS.

Например, при активации темы (редакции) на конкретном сервере прописывается каталог *{% raw %}<DOCUMENT_ROOT>{% endraw %}/themes/<НАЗВАНИЕ ТЕМЫ>*, структура которого идентична .templates, за исключением того, что стили и js-скрипты (каталоги css и js) находятся также внутри каталога темы.

Замечание, касаемо сайтов, созданных в конструкторе fastsite.ru:

{% raw %}<DOCUMENT_ROOT>{% endraw %} этих сайтов расположен в каталоге *www/subdmn/<ИМЯ САЙТА>*
Для этих сайтов, устанавливается тема simple. Поэтому, все файлы этих сайтов располагаются в каталоге *www/subdmn/<ИМЯ САЙТА>/themes/simple*

## Шаблонизатор Twig

В качестве шаблонизатора при разработке сайтов используем Twig [http://twig.sensiolabs.org](http://twig.sensiolabs.org/)

Инициализация движка производится в bootstrap.php:

	$twig = \Cetera\Application::getInstance()->getTwig();
 
### Правила именования шаблонов

Все шаблоны в подкаталоге **design**
Использование подкаталогов внутри design не приветствуется. Если у вас 100 шаблонов, то с вероятностью 90% вы делаете что-то не так
Расширение файлов **.twig**
Главный шаблон называется **layout.twig**
Шаблон главной страницы называется **page_index.twig**
Шаблоны страниц называются **page_*.twig**
Подключаемые блоки называются **block_*.twig**
Шаблоны писем называются **mail_*.twig**
Шаблоны rss лент называются **rss_*.twig**
Макросы — **macros_*.twig**
Не приветствуется вынос кода из шаблона в подключаемый шаблон, если подключать вы его будете всего в 1 месте

### Главный шаблон и шаблоны страниц:

Главный шаблон layout.twig — скелет сайта. Содержит код, повторяющийся на всех остальных страницах сайта:<commit_msg>Update file.md<commit_after>---
layout: default
title: Файловая структура Cetera CMS
nav_order: 2
parent: Cetera CMS изнутри
grand_parent: Руководство разработчика
---

# Файловая структура Cetera CMS
```
<DOCUMENT_ROOT>
+---.prefs            — основные настройки CMS
+---.htaccess         — настройки прав доступа и url rewrite
+---robots.txt    
+---cms/                     — скрипты Cetera CMS
+---library/                 — сторонние библиотеки, используемые Cetera CMS
+---uploads/                 — каталог по умолчанию для файлов, загружаемых пользователями через интерфейс CMS
+---plugins/                 — каталог с дополнительными модулями
+---themes/                  — каталог с темами (редакциями)
+---.cache/                  — хранилище кэша
+---.templates/              — скрипты сайта
|   +---design/              — верстка 
|   |   +---layout.twig      — главный шаблон
|   |   +---page_index.twig  — шаблон главной страницы сайта
|   |   +---page_404.twig    — шаблон страницы 404
|   +---classes/             — пользовательские классы
|   +---widgets/             — шаблоны виджетов
|   +---default.php          — контроллер по умолчанию
|   +---bootstrap.php        — скрипт запускаемый перед выполнением любого контроллера
+---css/                     — стили
+---js/                      — javascripts
```

По умолчанию, все скрипты, отвечающие за логику работы сайта располагаются в каталоге *{% raw %}<DOCUMENT_ROOT>{% endraw %}/.templates*. Имеется возможность переопределить этот каталог персонально для каждого сервера, задав нужное значение в поле «Каталог» в свойствах сервера в интерфейсе Cetera CMS.

Например, при активации темы (редакции) на конкретном сервере прописывается каталог *{% raw %}<DOCUMENT_ROOT>{% endraw %}/themes/<НАЗВАНИЕ ТЕМЫ>*, структура которого идентична .templates, за исключением того, что стили и js-скрипты (каталоги css и js) находятся также внутри каталога темы.

Замечание, касаемо сайтов, созданных в конструкторе fastsite.ru:

1. {% raw %}<DOCUMENT_ROOT>{% endraw %} этих сайтов расположен в каталоге *www/subdmn/<ИМЯ САЙТА>*
2. Для этих сайтов, устанавливается тема simple. Поэтому, все файлы этих сайтов располагаются в каталоге *www/subdmn/<ИМЯ САЙТА>/themes/simple*

## Шаблонизатор Twig

В качестве шаблонизатора при разработке сайтов используем Twig [http://twig.sensiolabs.org](http://twig.sensiolabs.org/)

Инициализация движка производится в bootstrap.php:

	$twig = \Cetera\Application::getInstance()->getTwig();
 
### Правила именования шаблонов

1. Все шаблоны в подкаталоге **design**
1. Использование подкаталогов внутри design не приветствуется. Если у вас 100 шаблонов, то с вероятностью 90% вы делаете что-то не так
1. Расширение файлов **.twig**
1. Главный шаблон называется **layout.twig**
1. Шаблон главной страницы называется **page_index.twig**
1. Шаблоны страниц называются **page_*.twig**
1. Подключаемые блоки называются **block_*.twig**
1. Шаблоны писем называются **mail_*.twig**
1. Шаблоны rss лент называются **rss_*.twig**
1. Макросы — **macros_*.twig**
1. Не приветствуется вынос кода из шаблона в подключаемый шаблон, если подключать вы его будете всего в 1 месте

### Главный шаблон и шаблоны страниц:

Главный шаблон layout.twig — скелет сайта. Содержит код, повторяющийся на всех остальных страницах сайта:
{'fraction_non_alphanumeric': 0.1046865489957395, 'fraction_numerical': 0.005934266585514303, 'mean_word_length': 3.1522425773847127, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7575979', 'n_tokens_mistral': 2667, 'n_tokens_neox': 2974, 'n_words': 709}