|
1. Создаём файел test.php в директории engine/modules/test.php
<!--
ecode2
-->
2. Создаём файел config.test.php в директории engine/data/config.test.php 3. Создаём файел test.tpl кидаем в ту тему которая у вас по умолчанию Открываем engine/modules/test.php Внего вставим: <!-- code1 -->
<!--
ecode1
-->
<!--
ecode2
-->
<</span>?php require_once(ENGINE_DIR.'/data/config.test.php'); $txt = $config_test['text']; $txt_detail = $config_test['detail']; $version = $config_test['version']; /* Подгружаем шаблон */ $tpl->load_template('test.tpl'); $tpl->set('{txt}', $txt); $tpl->set('{detail_txt}', $txt_detail); $tpl->set('{version}', $version); $tpl->compile('content'); $tpl->clear(); ? <!-- code2 --> Как видим, в данном модуле все переменные берутся из файла engine/data/config.test.php, и далее уже по известному сценарию мы подгружаем шаблон и производим замену переменных на их значения. В нашем случае будет производится три замены. Файл engine/data/config.test.php на самом начальном этапе необходимо создать. Его содержимое может быть пустым и в дальнейшем при управление модулем через админпанель код файла engine/data/config.test.php будет генерироваться автоматически. Теперь откроем шаблон test.tpl и вставим в него: <!-- code1 -->
<!--
ecode1
-->
<!--
ecode2
-->
{txt} - {detail_txt} Версия модуля: {version} <!-- code2 --> На этом можно считать, что фундамент построен и можно двигаться дальше. Займёмся созданием панели администрирования. Для этого откроем файл engine/inc/options.php и увидим в нём двумерный массив $options. Этот массив отвечает за формирования разделов в админпанели движка. <!-- code1 -->
<!--
ecode1
-->
$options['config'] – отвечает за разделы в блоке «Настройки скрипта»
<!--
ecode2
-->
$options['user'] – отвечает за разделы в блоке «Управление пользователями» $options['templates'] – отвечает за разделы в блоке «Управление шаблонами» $options['filter'] – отвечает за разделы в блоке «Управление фильтрами» $options['others'] – отвечает за разделы в блоке «Другие разделы» <!-- code2 --> Я предпочитаю размещать все сторонние модули в массиве <!-- code1 -->
<!--
ecode1
-->
$options['others']
<!--
code2
-->
<!--
ecode2
-->
Не отступлю я от своих принципов и сегодня. Как можно видеть в массиве <!-- code1 -->
<!--
ecode1
-->
$options['others']
<!--
code2
-->
<!--
ecode2
-->
уже есть некоторые разделы: <!-- code1 -->
<!--
ecode1
-->
array(
<!--
ecode2
-->
'name' => $lang['opt_static'], 'url' => "$PHP_SELF?mod=static", 'descr' => $lang['opt_staticd'], 'image' => "spset.png", 'access' => "1", ), array( 'name' => $lang['opt_banner'], 'url' => "$PHP_SELF?mod=banners&action=list", 'descr' => $lang['opt_bannerc'], 'image' => "ads.png", 'access' => "1", ), <!-- code2 --> Добавим к ним свой собственный, но для начала разберёмся в структуре массива раздела. <!-- code1 -->
<!--
ecode1
-->
array(
<!--
ecode2
-->
'name' - Переменная, отвечающая за название раздела 'url' - Переменная, отвечающая за ссылку на раздел 'descr' - Переменная, отвечающая за описание раздела 'image' - Переменная, отвечающая за картинку раздела 'access' - Переменная, отвечающая за доступ к разделу ), <!-- code2 --> Теперь можно создать и наш собственный раздел <!-- code1 -->
<!--
ecode1
-->
array(
<!--
ecode2
-->
'name' => 'Тест', 'url' => "$PHP_SELF?mod=test_adm", 'descr' => 'Настрйка модуля тест', 'image' => "test.png", 'access' => "1", ), <!-- code2 --> Теперь, если вы зайдёте в админпанель, то увидите в категории «Другие разделы» и ваш, только что созданный тестовый раздел. Одно но, иконка не отображается, и красный крест вместо неё мало радует глаз. А в чём проблема, давайте зайдём в папку engine/skins/images и загрузим туда любую иконку, которая вам нравится, и назовём её test.png. Желательно чтобы её размеры были 48*48, тогда, в админпанели будет царить гармония и симметрия. С разделом вроде разобрались, теперь сделаем возможным вход в данный раздел в админпанели, для этого нужно открыть доступ на файл администрирования, который мы пока не создали, но для дальнейших действий данный шаг является первоочередным. Итак, открываем файл admin.php любым текстовым редактором и видим там массив <!-- code1 -->
<!--
ecode1
-->
$system_modules
<!--
code2
-->
<!--
ecode2
-->
Без тени сомнения добавляем туда и наш будущий файл администрирования модуля test_adm, а если быть более точным, вам необходимо добавить строку <!-- code1 -->
<!--
ecode1
-->
'test_adm'=> 'admin'
<!--
code2
-->
<!--
ecode2
-->
Данная строка показывает, что файл test_adm.php будет доступен только админам. На этом мы разобрались со всеми доступами и можем приступить к созданию файла администрирования, о котором уже столько было сказано. Итак, заходим в папку engine/inc и создаём там файл test_adm.php. Открываем данный файл в текстовом редакторе и добавляем туда следующий текст: <!-- code1 -->
<!--
ecode1
-->
<</span>?php
<!--
ecode2
-->
/* Подключаемые файлы */ require_once(ENGINE_DIR.'/inc/test.functions.php'); require_once(ENGINE_DIR.'/data/config.test.php'); /** * Сохранение настроек модуля */ if ($action == "dosave") { $find[] = "'\r'"; $replace[] = ""; $find[] = "'\n'"; $replace[] = ""; if ($member_db[1] != 1) { msg ("error", $lang['opt_denied'], $lang['opt_denied']); } $handler = @fopen(ENGINE_DIR.'/data/config.test.php', "wb"); fwrite ($handler, "<</span>?php \n\n//Test configurations \n\n\$config_test = array( \n\n'version' => \"v.1.0\",\n\n"); foreach ($save_con as $name => $value) { $value = trim(stripslashes ($value)); $value = htmlspecialchars ($value, ENT_QUOTES); $value = preg_replace($find, $replace, $value); fwrite($handler, "'{$name}' => \"{$value}\",\n\n"); } fwrite($handler, ");\n\n?"); fclose($handler); msg ("info", "Строка изменена", "{$lang['opt_sysok_1']} $PHP_SELF}?mod=test_adm\">{$lang['db_prev']}"); } /** * Вывод header */ echoheader("Test", "Админпанель модуля test"); /** * Вывод блока настроек */ opentable(); tableheader('Настройка модуля'); echo<< HTML; closetable(); /** * Вывод footer */ echofooter(); ? <!-- code2 --> Это самое сердце модуля в данном сценарии реализуется, как графическая веб-форма панели администрирования, так и сохранение введенных данных. В начале мы подключаем файлы test.functions.php и config.test.php. В первом из них реализованы функции, которые отвечают за создание дизайна админпанели, благодаря ним мы имеем более доступный код, неотегащённый лишним html кодом. Приведу листинг файла test.functions.php, который будет необходимо создать в папке engine/inc. <!-- code1 -->
<!--
ecode1
-->
<</span>?php
if (!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } /** * Элементы дизайна админпанели */ function opentable() { echo <<
HTML; } function tableheader($value) { echo <<
class="unterline"> HTML; } ? <!-- code2 --> Далее необходимо создать пустой файл config.test.php в папке engine/data (не забудте установить на этот файл права chmod =777). Теперь снова приступим к разбору файла test_adm.php. После подключения файлов мы видим код отвечающий за сохранение введенных данных в веб-форме. Массив данных переданных методом POST заносится в файл config.test.php. Кроме того помимо переданных данных я решил включить в массив статические переменные не требующие частых изменений, в данном случае это переменная <!-- code1 -->
<!--
ecode1
-->
'version' => "v.1.0",
<!--
code2
-->
<!--
ecode2
-->
она будет неизменной при изменения других данных через веб-форму. И наконец, чтобы антивирус движка не ругался при сканирование сервера, нужно отредактировать файл antivirus.php, располагающийся в папке engine/ajax. Открываем его в текстовом редакторе, и в длинную череду данных массива <!-- code1 -->
<!--
ecode1
-->
$good_files
<!--
code2
-->
<!--
ecode2
-->
Добавляем: "./engine/modules/test.php", "./engine/data/config.test.php", "./engine/inc/test.functions.php", "./engine/inc/test_adm.php", Ну что могу ещё сказать вроде всё, ничего не забыл. Можно попробовать вводить различные данные в веб-форме и в результате вы будете получать различный вывод на сайте. Надеюсь что данные примеры, помогут вам в освоение технологии создания модулей для DataLife и в скором времени вы сможет писать более сложные проекты. (с) V1_rtus
|
Партнеры Опрос
Как вам новый дизайн?
|