Генерация страницы фронтофиса в Fastsite CMS

Как происходит генерация страницы фронтофиса в Fastsite CMS

Рассмотрим что происходит при обращении к сайту под управлением Fastsite CMS при попытке открыть страницу по адресу http://server.ru/foo/bar/baz

Шаг 1. Определение сервера.

Сetera CMS из коробки поддерживает многосерверность, поэтому первое, что делает система, это определение к которому серверу произошел запрос. В нашем случае будет выбран сервер, в свойствах которого определен домен или синоним «server.ru». Если сервером с указанным доменом не найден, то будет выбран первый по списку сервер. Выбранный сервер будет считаться текущим сервером.

API-метод \Cetera\Application::getServer() возвращает объект \Cetera\Server, представляющий текущий сайт.

Шаг 2. Определение раздела.

Затем cms пытается определить к какому разделу сайта произошло обращение. URL запроса разбивается на части разделителем «/»:

server.ru foo bar baz

По «server.ru» уже был определен текущий сервер на предыдущем шаге. Далее в текущем сервере производится поиск раздела с алиасом «foo», а в нем подраздел c алиасом «bar» и так далее. Если очередной раздел не будет найден, то цикл прерывается. Последний найденный раздел будет считаться текущим разделом. Текущим разделом может быть сервер, если не существует раздела первого уровня с указанным алиасом или если раздел не указан в URL запроса.

API-метод \Cetera\Application::getCatalog() возвращает объект \Cetera\Catalog, представляющий текущий раздел.

Если поиск текущего раздела прервался по причине отсутствия нужного раздела, то часть URL, которая осталась нераспознанной, сохраняется. И может быть получена методом \Cetera\Application::getUnparsedUrl()

Например, если в сервере server.ru есть раздел foo, в нем есть подраздел «bar», в котором нет подраздела «baz», то \Cetera\Application::getUnparsedUrl() вернет «baz». А если уже в разделе «foo», нет подраздела «bar», то «bar/baz» и т.д. Как правило, значение, возвращаемое методом getUnparsedUrl используется для поиска материала в текущем разделе.

Шаг 3. Поиск и исполнение кода контроллера.

По умолчанию, все скрипты сайта располагаются в каталоге /.templates. Имеется возможность переопределить этот каталог персонально для каждого сервера, задав нужное значение в поле «Каталог» в свойствах сервера в интерфейсе Fastsite CMS.

Шаг 4. Обработка результата.