1. Начало test.mod.php
Код: Выделить всё
<?php
$cms["modules"]["test.mod.php"] = array(
"name" => __( "Test", "test.mod.php" ),
"description" => __( "Test module", "test.mod.php" ),
"version" => "22.04",
"files" => array(
".cms/mod/test.mod.php",
),
"sort" => 100,
);
В данном случае создается массив, который описывает модуль и это описание выводится в панели администратора.
Следующим шагом добавим возможность отключения модуля из панели администратора:
2. Продолжение test.mod.php
Код: Выделить всё
// Return if module disabled
if ( ! empty( $cms["config"]["test.mod.php"]["disabled"] ) ) {
return;
}
3. Продолжение test.mod.php
Код: Выделить всё
cms_add_function( "template", "test_func" );
function test_func() {
global $cms;
$cms["output"] .= "<p>Добавляем текст в конец страницы</p>";
}
Можно сказать что наш модуль готов и выполняет хоть какое-то действие.
Для того, чтобы писать более осмысленные модули, а так же узнать как вывести настройки в панели администратора, необходимо понять как работает вся CMS.
Алгоритм работы Coffee CMS
Генерация страницы в Coffee CMS происходит в несколько этапов:
query — обработка запроса к сайту (извлечение текста страницы из базы данных);
template — шаблонизация страницы (оборачивание текста страницы в шаблон);
echo — отправка страницы браузеру;
write — запись страницы на диск (кеширование).
Когда завершается выполнение очередного этапа, то происходит переключение на следующий.
Кроме того существую служебные этапы выполнения:
admin — модули создают свои страницы настроек, после чего они отображаются в админке;
api — взаимодействие админки и модулей (сохранение текста страниц и т.п.);
cron — выполнение периодических задач по расписанию.
Служебные этапы запускаются путем посещения определенного адреса на сайте. Админка открывается при посещении /-admin, /cronXXXX запустит все функции модулей, которые зарегистрировались на этап 'cron' для выполнения периодических задач, а передача текста страницы, когда вы нажимаете кнопку «Сохранить» происходит на адрес /apiXXXX.
XXXX генерируется на каждом сайте свой и защищает админку.
Каждый модуль может зарегистрировать свои функции на перечисленные этапы. Делается это путем вызова функции cms_add_function().
Код: Выделить всё
cms_add_function( "stage", "func_name", $nice );
// Примеры:
// по умолчанию очередность вызова равна 10 и не указывается
cms_add_function( "template", "test_func" );
// уменьшаем $nice и тем самым вызываем раньше
cms_add_function( "template", "test_func", 5 );
// увеличиваем $nice и тем самым вызываем позже
cms_add_function( "template", "test_func", 15 );
function test_func() {
global $cms;
//...
}
Всё это вы можете увидеть в исходном коде Coffe CMS. Ядро представляет собой файл .cms/index.php и состоит из 92 строк кода. Функции ядра вынесены в отдельный файл .cms/index.fn.php и занимают 600 строк кода. Всё что делает ядро - это вызывает функции, зарегистрированные на определенные этапы и переключает этапы в цикле. Т.е. ядро задает определенный стандарт, который должны соблюдать модули, а уже весь функционал задают именно они.
Вы можете взять самый маленький по размеру модуль - base.mod.php, состоящий всего из 184 строк кода и посмотреть как создать страницу настроек в админке и как запоминать и использовать настройки.
Возможно в будущем мы доработаем эту статью и более подробно рассмотрим алгоритмы работы модулей, но, как говорится, только работа дает ответы на все вопросы. Вам необходимо иметь базовое понимание, как работают сайты, как работает код PHP, из каких элементов состоят страницы и конечно же самому пробовать делать модули. Без самостоятельной работы ничего не получится. В остальном же, мы постарались сделать максимально простую CMS, чтобы сайты были быстрыми и надежными.