Как написать свой модуль для Coffee CMS

Модуль для Coffee CMS это обычный php-файл, имя которого заканчивается на .mod.php и он лежит в папке .cms/mod. Он содержит несколько служебных полей, для того чтобы CMS узнала его название, описание, версию, перечень файлов которые ему нужны для работы.

Один из самых простых модулей является 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 на имя своего модуля. И, несмотря на то, что пока ваш модуль не будет ничего делать, он уже отобразится в списке модулей в админке.

Функция именуемая двумя подчеркиваниями - это функция переводчик. Она использует информацию из языковых файлов, чтобы переводить название модуля, его описание, надписи на кнопках и т.п. на различные языки. Ниже приведен код из языкового файла для русского языка:

<?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 состоит всего из 175 строк кода. И этого достаточно чтобы и отобразить настройки, и сохранить их и выполнять полезную работу.

Пишите в комментариях свои вопросы. Какую информацию мы не раскрыли, какие трудности у вас возникли. И мы дополним статью.

Комментировать