# Книга

## Введение

Описание алгоритмов работы CMS, чтобы было понятно как писать код для нее и модифицировать.

## Настройки CMS

Все настройки хранятся в файле .cms/config.php. Он создается при установке. Для каждого модуля имеется отдельный подмассив с именем этого модуля. Такой подход позволяет быстро их загружать, независимо от наличия соединения с базой данных. Кроме того PHP умеет кешировать opcache.enable=1 в php.ini и файл находится в памяти в откомпилированном виде. При сохранении его на диск вызывается функция opcache_invalidate() которая заставит PHP перечитать файл при следующем его включении.

## Структура папок

Все файлы CMS хранятся в папке .cms что позволяет в корне сайта размещать что угодно, в том числе и сгенерированные страницы. И последующее к ним обращение из браузера не запускает CMS. Файлы отдаются с диска веб-сервером.

Файлы и папки начинающиеся на точку считаются скрытыми и прямой доступ к ним запрещен. Но веб-сервер, через файл .htaccess, настраивается так, что всегда обращается к файлу .cms/index.php. Если приходит запрос /mytpl/css/style.css, то идет попытка найти файл .cms/mytpl/css/style.css, и если он есть то он копируется в корневую папку по пути указанному в запросе и отдается браузеру. Если на диске уже имеется такой файл, то он не перезаписывается. Единственная тут странность в том, что если файл был на диске, то такого запроса к CMS быть не может.