описание файла page.php в Cotonti CMF
Основное назначение и место в системе Cotonti
Файл page.php — это главный контроллер модуля "Page", который отвечает за управление страницами на сайте, работающем на Cotonti CMF. Он выполняет маршрутизацию (routing) запросов, обработку данных и загрузку соответствующих компонентов для выполнения различных операций с контентом.
Расположение:
/modules/page/page.php
Это стандартный путь для всех модулей в Cotonti, что отражает модульную архитектуру движка.
Основные задачи файла
-
Определение режима работы (Mode Routing):
В зависимости от параметров URL (например, id, al или m), файл определяет, в каком режиме должен работать модуль:
add — добавление новой страницы;
edit — редактирование существующей страницы;
counter — работа со счетчиком просмотров страниц;
main — отображение конкретной страницы;
list — вывод списка страниц (по умолчанию, если не указаны другие параметры).
-
Подключение необходимых зависимостей:
- Загружает дополнительные библиотеки Cotonti, такие как
extrafields для поддержки дополнительных полей страниц.
- Подключает основные файлы модуля
page для обеспечения функциональности.
-
Обеспечение безопасности:
Файл защищен от прямого доступа через проверку константы COT_CODE, что предотвращает несанкционированное выполнение скрипта.
-
Настройка окружения:
Устанавливает базовые переменные среды ($env['location'] = 'pages'), чтобы другие части системы Cotonti могли идентифицировать контекст выполнения (работа с модулем страниц).
Взаимодействие с другими компонентами Cotonti
Файл page.php играет ключевую роль во взаимодействии с другими частями системы:
-
Интеграция с API Cotonti:
Использует функцию cot_incfile() для подключения необходимых файлов. Это стандартный метод в Cotonti для загрузки модулей и расширений.
-
Связь с базой данных:
Через подключенные модули обрабатывает запросы к базе данных для добавления, редактирования или отображения страниц.
-
Взаимодействие с шаблонами (TPL):
Загружает соответствующие шаблоны интерфейса для отображения контента. Например, в режиме list будет использоваться шаблон для списка страниц, а в режиме edit — для формы редактирования.
-
Работа с дополнительными полями (Extra Fields):
Поддержка дополнительных полей осуществляется через API extrafields, что позволяет расширять функциональность страниц без изменения структуры базы данных.
Процесс выполнения запроса
-
Получение запроса:
Пользователь обращается к сайту по определенному URL (например, site.com/page.php?id=5).
-
Определение режима:
Файл проверяет параметры (id, al, m) и выбирает режим работы (main, list, add, edit, counter).
-
Загрузка зависимостей:
В зависимости от режима загружаются нужные модули и файлы.
-
Обработка данных:
Выполняется работа с базой данных, обработка пользовательского ввода и логика, связанная с модулем страниц.
-
Отправка ответа:
Формируется HTML-страница с помощью соответствующих шаблонов и отправляется пользователю.
Вывод
Файл page.php — это ядро модуля управления страницами в Cotonti. Он не содержит сложной бизнес-логики, но выполняет критически важные задачи по маршрутизации запросов, подключению зависимостей и управлению режимами работы. Благодаря своей архитектуре, он легко расширяем и интегрируем с другими модулями системы.
<?php
/* ====================
[BEGIN_COT_EXT] // Начало секции расширения Cotonti, указывающей, что это модуль.
Hooks=module // Указывает, что этот код подключается как модуль Cotonti.
[END_COT_EXT] // Конец секции расширения.
==================== */
/**
* Page module main // Основной файл модуля страниц.
*
* @package Page // Указывает, что данный файл относится к пакету Page.
* @copyright (c) Cotonti Team // Авторские права принадлежат команде Cotonti.
* @license https://github.com/Cotonti/Cotonti/blob/master/License.txt // Ссылка на лицензионное соглашение проекта.
*
* @var string $m // Переменная $m, определяющая режим работы модуля (например, add, edit).
*/
defined('COT_CODE') or die('Wrong URL.'); // Проверка, определена ли константа COT_CODE. Если нет, скрипт завершает выполнение с сообщением "Wrong URL." Это защита от прямого доступа к файлу.
// Environment setup // Настройка окружения
define('COT_PAGES', TRUE); // Определение константы COT_PAGES со значением TRUE для идентификации того, что работает модуль страниц.
$env['location'] = 'pages'; // Установка значения 'pages' в массиве $env для обозначения текущего местоположения (окружения) в системе Cotonti.
// Additional API requirements // Подключение дополнительных API
require_once cot_incfile('extrafields'); // Подключение файла с функциями для работы с экстраполями (дополнительными полями), что позволяет использовать кастомные данные для страниц.
// Self requirements // Подключение собственных зависимостей модуля
require_once cot_incfile('page', 'module'); // Подключение основного файла модуля страниц (page), который содержит базовую логику для работы с этим модулем.
// Mode choice // Определение режима работы
if (!in_array($m, ['add', 'edit', 'counter'])) { // Проверка, установлен ли режим $m в одно из значений: 'add', 'edit' или 'counter'. Если нет — выполняется следующий блок кода.
$id = cot_import('id','G','NOC'); // Импорт переменной 'id' из GET-запроса, ожидая числовое значение (NOC). Используется для проверки наличия корректного ID страницы (важно для обработки 404).
$al = cot_import('al','G','TXT'); // Импорт переменной 'al' из GET-запроса, ожидая текстовое значение (TXT). Используется для работы с альтернативными алиасами страниц.
if (isset($id) || $al) { // Если существует значение $id или $al (то есть задана конкретная страница),
$m = 'main'; // устанавливаем режим работы модуля в 'main' для отображения этой страницы.
} else {
$m = 'list'; // Если ни $id, ни $al не заданы, модуль переключается в режим 'list' для вывода списка страниц.
}
}
require_once cot_incfile('page', 'module', $m); // Подключение файла, соответствующего выбранному режиму ($m), например, page.add.php, page.edit.php или page.list.php.