|
|
Архитектура diafan.CMSВсе запросы к системе попадают в первую очередь на файл index.php. Файл выполняет следующие функции:
-
подключение всех «жизненно важных» файлов;
-
проверку наличия папки инсталляции, если да, то перенаправление на установку системы;
-
проверку запроса на доступ к административной папке, если да, то перенаправление на административную часть;
-
определение путей сайта (анализируется адрес, который после site.ru/);
-
инициация основного объекта системы.
Основной объект системы – экземпляр класса Init, описанный в файле includes/init.php.
При инициации основного объекта системы происходит:
-
старт сессии;
-
определение пользователя;
-
определение запрошенной языковой версии сайта;
-
определение запрошенной страницы сайта;
-
подключение возможного модуля(лей);
-
подключение шаблона дизайна сайта (/themes/site.php по умолчанию).
Экземпляр класса Init передается во все другие объекты и доступен из любого места системы в виде переменной $this->diafan.
Таким образом в любом месте системы можно получить глобальные данные:
-
данные о текущей странице;
-
переданные в URL переменные;
-
общие функции;
-
объекты классов-подключений.
Теперь подробнее об этих данных:
Данные о текущей странице
В область глобальной видимости попадают следующие данные о текущей странице и данные, сформированные модулем (это РНР-переменные, которые можно использовать как угодно в любом месте diafan.CMS):
-
$this->diafan->cid – id-номер текущей страницы, уникальный номер каждой страницы сайта;
-
$this->diafan->rewrite – ЧПУ текущей страницы сайта, для страницы site.ru/news/popular/novost/ в переменной будет "news/popular/novost";
-
$this->diafan->rewrite_module – ЧПУ текущей страницы, сгенерированный модулем, для страницы site.ru/news/popular/novost/ в переменной будет "popular/novost";
-
$this->diafan->name – название текущей страницы;
-
$this->diafan->title_meta – заголовок текущей страницы из тега title;
-
$this->diafan->titlemodule – заголовок страницы, сформированный автоматически прикрепленным модулем;
-
$this->diafan->edit_titlemodule – данные для редактирования заголовка модуля;
-
$this->diafan->titlemodule_meta – заголовок текущей страницы для тега title, сформированный прикрепленным модулем;
-
$this->diafan->keywords – данные из тега keywords текущей страницы;
-
$this->diafan->descr – данные из тега descriptions текущей страницы;
-
$this->diafan->theme – имя файла шаблона дизайна текущей страницы;
-
$this->diafan->text – контент текущей страницы;
-
$this->diafan->hide_previous_next – спрятать ссылки на предыдущую, последующую страницы
-
$this->diafan->parent_id – номер страницы родителя;
-
$this->diafan->actm – показывать текущую страницу в меню, да/нет (1/0);
-
$this->diafan->title_no_show – не показывать заголовок h1 текущей страницы, да/нет (1/0);
-
$this->diafan->timeedit – время редактирования текущей страницы, в nix-формате;
-
$this->diafan->module – название модуля, прикрепленного к текущей странице;
-
$this->diafan->path – часть навигации «Хлебные крошки», сформированная прикрепленным модулем.
Переданные в URL переменные
Список всех доступных переменных задан в массиве $this->diafan->rewrite_variable_names_all.
-
$this->diafan->page – номер страницы при пагинации, например, site.ru/news/page2/ в переменной будет "2";
-
$this->diafan->show – номер элемента, если отключено автоматическое формирование ЧПУ для модулей и страница имеет вид site.ru/shop/cat3/show3/ в переменной будет "3";
-
$this->diafan->add – добавить элемент, если есть переменная, значит TRUE, например, при добавлении комментария;
-
$this->diafan->edit – номер элемента для редактирования, например, при редактировании своего сообщения на форуме;
-
$this->diafan->param – номер параметра, например, при поиске в магазине;
-
$this->diafan->comments – номер страницы с комментариями;
-
$this->diafan->cat – номер категории, если отключено автоматическое формирование ЧПУ для модулей и страница имеет вид site.ru/shop/cat5/ в переменной будет "5";
-
$this->diafan->year – выведет текущий год;
-
$this->diafan->month – выведет текущий месяц;
-
$this->diafan->step – шаг, переменная аналог page, например для корзины заказов в магазине. На странице site.ru/order/step2/ в переменной будет "2";
-
$this->diafan->sort – сортировка.
Общие функции
Класс Init наследует абстрактный класс Core (includes/core.php). Все функции этого класса можно вызвать в контроллере и модели модуля в виде:
$this->diafan->название_функции();
Объекты классов-подключений
В основном объекте инициируются классы:
- пользователи (класс
User, файл includes/user.php, вызывается $this->diafan->_user);
- кеширование (класс
Cache, файл includes/cache.php, вызывается $this->diafan->_cache);
- маршрутизатор (класс
Route, файл includes/route.php, вызывается $this->diafan->_route);
- подключение шаблонов (класс
Template, файл includes/template.php, вызывается $this->diafan->_tpl).
Кроме того, через основной объект можно обратится к любому модулю-подключению. Если в модуле есть файл modules/модуль/модуль.inc.php, где описан класс Модуль_inc, то при первом обращении к переменной $this->diafan->_модуль, создастся экземпляр класса.
Не понятно? Уточните
|