1. Создаём файел test.php в директории engine/modules/test.php
2. Создаём файел config.test.php в директории engine/data/config.test.php
3. Создаём файел test.tpl кидаем в ту тему которая у вас по умолчанию

Открываем engine/modules/test.php Внего вставим:

<!-- code1 -->
<!-- ecode1 -->
<</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 -->
<!-- ecode2 -->

Как видим, в данном модуле все переменные берутся из файла engine/data/config.test.php, и далее уже по известному сценарию мы подгружаем шаблон и производим замену переменных на их значения. В нашем случае будет производится три замены.
Файл engine/data/config.test.php на самом начальном этапе необходимо создать. Его содержимое может быть пустым и в дальнейшем при управление модулем через админпанель код файла engine/data/config.test.php будет генерироваться автоматически.

Теперь откроем шаблон test.tpl и вставим в него:

<!-- code1 -->
<!-- ecode1 -->

{txt} - {detail_txt}

Версия модуля: {version}




<!-- code2 -->
<!-- ecode2 -->

На этом можно считать, что фундамент построен и можно двигаться дальше. Займёмся созданием панели администрирования. Для этого откроем файл engine/inc/options.php и увидим в нём двумерный массив $options. Этот массив отвечает за формирования разделов в админпанели движка.

<!-- code1 -->
<!-- ecode1 --> $options['config'] – отвечает за разделы в блоке «Настройки скрипта»
$options['user'] – отвечает за разделы в блоке «Управление пользователями»
$options['templates'] – отвечает за разделы в блоке «Управление шаблонами»
$options['filter']  – отвечает за разделы в блоке «Управление фильтрами»
$options['others'] – отвечает за разделы в блоке «Другие разделы»
<!-- code2 -->
<!-- ecode2 -->

Я предпочитаю размещать все сторонние модули в массиве

<!-- code1 -->
<!-- ecode1 --> $options['others'] <!-- code2 -->
<!-- ecode2 -->

Не отступлю я от своих принципов и сегодня. Как можно видеть в массиве

<!-- code1 -->
<!-- ecode1 --> $options['others'] <!-- code2 -->
<!-- ecode2 -->

уже есть некоторые разделы:

<!-- code1 -->
<!-- ecode1 --> array(
'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 -->
<!-- ecode2 -->

Добавим к ним свой собственный, но для начала разберёмся в структуре массива раздела.

<!-- code1 -->
<!-- ecode1 --> array(
'name'       - Переменная, отвечающая за название раздела
'url'           - Переменная, отвечающая за ссылку на раздел
'descr'       - Переменная, отвечающая за описание раздела
'image'     - Переменная, отвечающая за картинку раздела
'access'     - Переменная, отвечающая за доступ к разделу
), <!-- code2 -->
<!-- ecode2 -->

Теперь можно создать и наш собственный раздел

<!-- code1 -->
<!-- ecode1 --> array(
'name'      => 'Тест',
'url'          => "$PHP_SELF?mod=test_adm",
'descr'      => 'Настрйка модуля тест',
'image'     => "test.png",
'access'     => "1",
), <!-- code2 -->
<!-- ecode2 -->

Теперь, если вы зайдёте в админпанель, то увидите в категории «Другие разделы» и ваш, только что созданный тестовый раздел. Одно но, иконка не отображается, и красный крест вместо неё мало радует глаз. А в чём проблема, давайте зайдём в папку 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
/* Подключаемые файлы */
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<<


  
    
  
  
  
  
  
    
  
  
  
  
  
    
  
  
class="option" style="padding:4px;">
       Текст выводимой строки:

      class="small"> например: Hello world
    

      class="edit" style="text-align:center" size="40" value="{$config_test['text']}" name="save_con[text]">
class="option" style="padding:4px;">
       Комментарий к тексту:

       class="small"> например: Это ваш первый пример модуля с админпанелью
    

       class="edit" style="text-align:center" size="40" value="{$config_test['detail']}" name="save_con[detail]">
class="option" style="padding-bottom:10px; padding-top:10px; padding-left:10px;" colspan="2">
      class="buttons" type="hidden" name="action" value="dosave" />
      class="buttons" type="submit" name="do" value=" Сохранить " />


HTML;
closetable();


/**
* Вывод footer
*/

echofooter();
? <!-- code2 -->
<!-- ecode2 -->


Это самое сердце модуля в данном сценарии реализуется, как графическая веб-форма панели администрирования, так и сохранение введенных данных. В начале мы подключаем файлы 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 closetable() {
echo <<     

HTML;
}

function tableheader($value) {
echo <<
    
        
    

          
class="navigation">$value

class="unterline">

HTML;
}
? <!-- code2 -->
<!-- ecode2 -->

Далее необходимо создать пустой файл 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


Написал Alexander, в Хаки. , просмотров 115
Рейтинг: 

Подробнее   Комментарии (0)

Добавить отзыв

Включите эту картинку для отображения кода безопасности
обновить код




Регистрация
Введите логин:
и пароль:



Партнеры
Опрос
Как вам новый дизайн?
Нравится
Нормально
Так себе
Не нравится