Архитектура DIAFAN.CMS
Все запросы к системе попадают в первую очередь на файл index.php. Файл выполняет следующие функции:
- подключение всех «жизненно важных» файлов;
- проверка наличия папки инсталляции – если да, то перенаправление на установку системы;
- проверка запроса на доступ к административной папке – если да, то перенаправление на административную часть;
- определение путей сайта (анализируется адрес, который после site.ru/);
- инициация основного объекта системы.
Основной объект системы – экземпляр класса Init, описанный в файле includes/init.php.
При инициации основного объекта системы происходит:
- старт сессии;
- определение пользователя;
- определение запрошенной языковой версии сайта;
- определение запрошенной страницы сайта;
- подключение модуля;
- подключение шаблона дизайна сайта (по умолчанию themes/site.php).
Экземпляр класса Init передается во все другие объекты и доступен из любого места системы в виде переменной $this->diafan
.
Таким образом, в любом месте системы можно получить глобальные данные:
- общие данные;
- общие функции;
- объекты классов-подключений.
Теперь подробнее об этих данных:
Общие данные
$this->diafan->installed_modules
– массив данных с именами модулей, которые подключены к фронтенду сайта (в таблице {modules} сделала запись о модуле name=модуль, site='1');Пример:
if(in_array('cart', $this->diafan->installed_modules))
{
// модуль «Корзина товаров» установлен и можно к нему обращаться
}$this->diafan->rewrite_variable_names
– список всех переменных, доступных для использования в URL;$this->diafan->current_module
– модуль текущего исполняемого файла;$this->diafan->current_insert_tag
– текущий шаблонный тег.
Общие функции
Класс Init наследует абстрактный класс Core (includes/core.php). Все функции этого класса можно вызвать в контроллере и модели модуля в виде:
$this->diafan->название_функции();
Пример:
// редирект на главную страницу
$this->diafan->redirect('/');
// получение сообщения для пользователя, заданного в настройках модуля «Обратная связь»
$message = $this->diafan->configmodules('add_message', 'feedback');
Объекты классов-подключений
В основном объекте инициируются классы:
- кеширование (класс
Cache
, файл includes/cache.php, вызывается$this->diafan->_cache
) – вся работа с кэшем; - маршрутизатор (класс
Route
, файл includes/route.php, вызывается$this->diafan->_route
) – доступ к переменным, передаваемым в URL, а также генерирование, сохранение, получение ЧПУ; - шаблоны модулей (класс
Template
, файл includes/template.php, вызывается$this->diafan->_tpl
) – подключение шаблонов модулей, обработка текста из визуального редактора; - парсер шаблонных тегов (класс
Parser_theme
, файл includes/parser_theme.php, вызывается$this->diafan->_parser_theme
) – подключает шаблонные теги, прописанные в виде тегов в шаблонах сайта и непосредственно в тексте визуального редактора.
Кроме того, через основной объект можно обратиться к любому модулю-подключению. Если в модуле есть файл modules/модуль/модуль.inc.php, где описан класс Модуль_inc, то при первом обращении к переменной $this->diafan->_модуль
, создаётся экземпляр класса.
Выделим отдельно подключения модулей, относящихся к ядру системы:
cтраницы сайта – используется для получения данных о текущей странице и переопределение их в модуле.
Пример:
$this->diafan->_site->id
– номер текущей страницы;$this->diafan->_site->module
– модуль, прикрепленный к текущей странице;$this->diafan->_site->text
– контент текущей страницы.
пользователи сайта – используется для получения сведений о текущем пользователе.
Пример:
$this->diafan->_users->id
– id-номер текущего пользователя;$this->diafan->_users->name
– логин текущего пользователя;$this->diafan->_users->fio
– ФИО текущего пользователя.
языки сайта – используется для получения сведений о языках сайта, главной языке административной и пользовательской частей сайта и получение перевода интерфейса.
Пример:
$this->diafan->_languages->all
– массив данных обо всех языках, использующихся на сайте;$this->diafan->_languages->site
– номер языка, использующегося как основной на сайте;$this->diafan->_languages->admin
– номер языка, использующегося как основной в административной части.
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.