Как написать свой модуль для Coffee CMS
Модуль для Coffee CMS это обычный php-файл, имя которого заканчивается на .mod.php и он лежит в папке .cms/mod. Он содержит несколько служебных полей, для того чтобы CMS узнала его название, описание, версию. Так же содержит перечень файлов которые ему нужны для работы. Когда нажмете кнопку "удалить модуль", то просто отобразится этот список файлов, которые нужно удалить.
Один из самых простых модулей является base.mod.php. Он сделан без js-скриптов и подходит для первого изучения. Он начинается следующим кодом:
.cms/mod/base.mod.php:
<?php
$cms["modules"]["base.mod.php"] = array(
"name" => __( "module_name" ),
"description" => __( "module_description" ),
"version" => "",
"files" => array(
".cms/css/base.css",
".cms/mod/base.mod.php",
".cms/lang/ru_RU.UTF-8/base.mod.php",
".cms/lang/en_US.UTF-8/base.mod.php",
".cms/lang/uk_UA.UTF-8/base.mod.php",
),
);
$cms это глобальная переменная в которой хранится различная информация. Модуль, загружаясь записывает в нее сведения о себе. Создайте свой файл модуля, скопируйте туда этот код и замените слово base на имя своего модуля. И, несмотря на то, что пока ваш модуль не будет ничего делать, он уже отобразится в списке модулей в админке.
Функция именуемая двумя подчеркиваниями - это функция переводчик. Она использует информацию из языковых файлов, чтобы переводить название модуля, его описание, надписи на кнопках и т.п. на различные языки. Ниже приведен код из языкового файла для русского языка:
.cms/lang/ru_RU.UTF-8/base.mod.php:
<?php
$cms["lang"]["base.mod.php"]["ru_RU.UTF-8"] = array(
"module_name" => "База данных",
"module_description" => "Модуль подключающий базу данных",
"server_address" => "Адрес сервера БД",
"server_port" => "Порт сервера БД",
"db_name" => "Название БД",
"db_user" => "Пользователь БД",
"db_password" => "Пароль БД",
"admin_login" => "Админ СУБД",
"admin_passwd" => "Пароль Админа СУБД",
"create_btn" => "Создать",
"create_db" => "Создать базу данных:",
"save" => "Сохранить",
);
Тут мы снова видим присванивание в глобальную переменную $cms. Она является аккумулятором всего необходимого для работы. И любой модуль может получать из нее нужную ему информацию. Для изучения структуры переменной $cms вы можете создать модуль, который будет сбрасывать значение этой переменной в файл на диск и изучить что там находится. Например, вот таким кодом:
<?php
file_put_contents( __DIR__ . "/debug.php", '<?php $cms = ' . var_export( $cms, true) . ";\n", LOCK_EX );
Если вы хотите чтобы ваш модуль сохранял свои настройки в файле .cms/config.php, как это делают другие модули, то просто запишите свои настройки по образцу модуля base и вызовите функцию cms_save_config():
<?php
$cms["config"]["base.mod.php"]["host"] = $_POST["host"];
$cms["config"]["base.mod.php"]["port"] = $_POST["port"];
$cms["config"]["base.mod.php"]["base"] = $_POST["base"];
$cms["config"]["base.mod.php"]["user"] = $_POST["user"];
cms_save_config();
Функция cms_save_config() использует похожий на вышеприведенный код, чтобы сохранить значение $cms["config"]. Вот и все. Посмотреть код этой функции можно в файле .cms/index.fn.php. Она состоит всего из трех строк.
Цель создания цмски - написать как можно меньше бессмысленного кода. Чтобы не нужно было тратить много времени на его изучение. Модуль .cms/mod/base.mod.php состоит всего из 182 строк кода. И этого достаточно чтобы и отобразить настройки, и сохранить их и выполнять полезную работу.
Пишите в комментариях свои вопросы. Какую информацию мы не раскрыли, какие трудности у вас возникли. И мы дополним статью.