Алгоритм выполнения шаблона

Просмотров: 6597Комментарии: 0
Центр помощи

Работа MaxSite CMS основана на анализе входящего URL. Согласно URL определяется тип данных, который по сути представляет собой первый сегмент адреса (сегменты разделены «/»). Таким образом в адресе сайт/page/hello первый сегмент — page. В адресе сайт/bookbook.

В MaxSite CMS предопределены некоторые сегменты, которые являются типами данных. Например page используется для вывода одиночной записи, а category — для списка записей указанной рубрики. Для тех сегментов, о которых MaxSite CMS не знает автоматически ставится тип данных page_404 и дальнейшая его обработка целиком ложится на плечи вебмастера.

Type-файлы

За обработку типов данных отвечают type-файлы. Физически type-файлы располагаются в shared-каталоге type. Каждый тип данных находится в своём отдельном каталоге.

Type-файлы как правило редко меняются в шаблоне, и если стоит такая необходимость, то достаточно разместить type-каталог в шаблоне, повторяя структуру и имя файла из shared. Диспетчер типов данных автоматически подключит файл из шаблона.

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

Диспетчеризация выполняется в index.php шаблона функцией mso_dispatcher(). Диспетчер автоматически проверяет наличие type-файлов в каталоге шаблона, а также анализирует входящий URL, в случае типа page_404.

Если MaxSite CMS установила тип данных page_404, диспетчер проверяет наличие type-файла совпадающего по имени с первым сегментом. Например для адреса сайт/book MaxSite CMS установила тип page_404, поскольку такой тип неизвестен системе. Диспетчер проверит существование файла type/book/book.php в шаблоне и если такой файл есть, то передаст ему управление.

Данный пример показывает, что в MaxSite CMS возможны произвольные URL и произвольные типы данных, базирующихся на входящем URL.

Работа type-файла

В начале работы type-файла происходит получение данных, согласно текущему типу. Например для page — выполняется выборка записи из базы данных. Перед началом вывода в браузер, включается буферизация (shared/main/main-start.php или в текущем шаблоне).

В конце type-файла подключается файл main-end.php (shared/main/main-end.php или в текущем шаблоне), где происходит получение буфера вывода и сохранение её в глобальную переменную $CONTENT_OUT.

В main-end.php также происходит определение необходимого main-файла, в котором, собственно, и происходит непосредственный вывод в браузер в требуемом HTML-коде.

Main-шаблон

С практической точки зрения удобно иметь единый файл с html-структурой шаблона. Эту задачу решает main-шаблон в виде main.php. В этом файле происходит вывод в браузер.

По своей сути main-шаблон является модульной сеткой сайта, где предопределены все теги-контейнеры, а также необходимый программный код. В подавляющем большинстве случаев вебмастеру нет необходимости менять структуру этого файла.

Вместе с тем, MaxSite CMS поддерживает множество main-шаблонов, которые могут произвольно использоваться для разных типов данных или разных записей. Это означает, что шаблон может поддерживать одновременно несколько модульных сеток, которые переключаются/выбираются в админ-панели.

Main-файлы находятся в каталоге шаблона main. Например для модульной сетки без сайдбаров используется шаблон no-sidebar в main/no-sidebar/main.php.

Ещё раз кратко об алгоритме работы шаблона

  1. Включается index.php шаблона.
  2. Диспетчер определяет и подключает нужный type-файл.
  3. В начале type-файла получаются данные для вывода.
  4. Подключается main-start.php, где включается буферизация данных.
  5. Type-файл отрабатывает полностью и подключается main-end.php
  6. В main-end.php буфер вывода сохраняется и определяется main-шаблон.
  7. В main.php происходит непосредственный вывод данных в браузер.
РЕКЛАМА
windows 7 загрузочная флешка торрент | Перед тем, как играть в машинариум, игру machinarium скачать бесплатно надо и установить на PC. | Русскую версию World of Goo скачать бесплатно на компьютер на igraworldofgoo.ru. |

О проекте

MaxSite CMS предназначена для создания сайтов любой сложности. Система отлично подходит обычным пользователям, вебмастерам, фрилансерам и вебстудиям.