Архитектура diafan.CMS

Все запросы к системе попадают в первую очередь на файл index.php. Файл выполняет следующие функции:

  1. подключение всех «жизненно важных» файлов;

  2. проверку наличия папки инсталляции, если да, то перенаправление на установку системы;

  3. проверку запроса на доступ к административной папке, если да, то перенаправление на административную часть;

  4. определение путей сайта (анализируется адрес, который после site.ru/);

  5. инициация основного объекта системы.

Основной объект системы – экземпляр класса Init, описанный в файле includes/init.php.

При инициации основного объекта системы происходит:

  1. старт сессии;

  2. определение пользователя;

  3. определение запрошенной языковой версии сайта;

  4. определение запрошенной страницы сайта;

  5. подключение возможного модуля(лей);

  6. подключение шаблона дизайна сайта (/themes/site.php по умолчанию).

Экземпляр класса Init передается во все другие объекты и доступен из любого места системы в виде переменной $this->diafan.

Таким образом в любом месте системы можно получить глобальные данные:

  1. данные о текущей странице;

  2. переданные в URL переменные;

  3. общие функции;

  4. объекты классов-подключений.

Теперь подробнее об этих данных:

Данные о текущей странице

В область глобальной видимости попадают следующие данные о текущей странице и данные, сформированные модулем (это РНР-переменные, которые можно использовать как угодно в любом месте 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->название_функции();

Объекты классов-подключений

В основном объекте инициируются классы:

Кроме того, через основной объект можно обратится к любому модулю-подключению. Если в модуле есть файл modules/модуль/модуль.inc.php, где описан класс Модуль_inc, то при первом обращении к переменной $this->diafan->_модуль, создастся экземпляр класса.



Не понятно? Уточните