Вопросы и ответы
Вебмастеру
Диспетчер типов данных
Каждый шаблон располагается в отдельном каталоге. Для него обязательным является только один файл — index.php
. В большинстве случаев здесь размещается диспетчер типов данных — функция mso_dispatcher()
.
Также в index.php
происходит подключение файлов библиотек для работы с записями и рубриками.
Тип данных, с точки зрения MaxSite CMS — это первый сегмент URL.
- http://site.com/page/about — это тип данных «page».
- http://site.com/category/news — тип данных «category».
- http://site.com/contact — тип данных «contact».
- http://site.com/tag/hello — тип данных «tag».
- http://site.com/user/42 — тип данных «user».
- http://site.com/doc/template-dispatcher — тип данных «doc».
Главная страница сайта имеет предопределённый тип «home».
Система поддерживает несколько наиболее распространённых типов данных:
- page - вывод одиночной страницы
- category - вывод рубрик
- contact - контактная форма
- search - поиск по сайту и т.д.
Если система сталкивается с неизвестным ей типом данных, то тип принимает значение «page_404».
Тип данных определяется при инициализации MaxSite CMS, поэтому диспетчер получает уже готовый результат для анализа.
По своей сути диспетчер типов — это роутер, который управляет работой сайта на основе входящего URL.
Диспетчер на основе типа данных производит поиск соответствующего ему файла. Используется очень простая схема, когда тип данных совпадает с именем его каталога. В шаблоне для этого используется каталог type
, а файл типа данных называется type-файлом, который также совпадает с типом.
- шаблон/type/page/page.php — соответствует http://site.com/page/about
- шаблон/type/category/category.php — соответствует http://site.com/category/news
- шаблон/type/contact/contact.php — соответствует http://site.com/contact
- шаблон/type/tag/tag.php — соответствует http://site.com/tag/hello
- шаблон/type/doc/doc.php — соответствует http://site.com/doc/template-dispatcher
- шаблон/type/page_404/page_404.php — соответствует неизвестному типу
- шаблон/type/home/home.php — главная страница http://site.com/
Таким образом, диспетчер просто подключает type-файл. Сам по себе type-файл может оказаться достаточно сложным, и кроме того, type-файлы могут дублироваться между разными шаблонами. Чтобы этого избежать, MaxSite CMS предлагает использовать готовые type-файлы из каталога maxsite/shared/type
.
Диспетчер вначале проверяет существование type-файла в каталоге шаблона, и если его там нет, то подключит файл из shared-каталога. Это позволяет в шаблоне менять только те type-файлы, которые отличаются от стандартных.
Когда возникает необходимость создать новый тип данных, то достаточно разместить type-файл в своём шаблоне. Диспетчер их автоматически определит и подключит.