Современная, быстрая и удобная система управления сайтом

Диспетчер типов данных

Каждый шаблон располагается в отдельном каталоге. Для него обязательным является только один файл — 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-файл в своём шаблоне. Диспетчер их автоматически определит и подключит.