Генерация страницы фронтофиса в 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. Поиск и исполнение кода контроллера.
По умолчанию, все скрипты сайта располагаются в каталоге