Мы в твиттере Мы в телеграме!

Провеббер » Web » Полезные статьи » Учимся писать модули с админпанелью для DLE

Набор в команду! Ведется набор в команду, для наполнения сайта новым, интересным контентом. Если у тебя есть предложения, свободное время, ты обладаешь интересным контентом, и хочешь поделиться с другими?
Обращайся к нам в ЛС группы Вконтакте.

Учимся писать модули с админпанелью для DLE

Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Учимся писать модули с админпанелью для DLE.

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

Открываем engine/modules/test.php Внего вставим:
<?php
<strong>require_once</strong>(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();
?>


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

Теперь откроем шаблон test.tpl и вставим в него:
<html>
<body>
{txt} - <i>{detail_txt}</i>
<p>Версия модуля: {version}</p>
</body>
</html>


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

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


Размещать все сторонние модули в массиве:

$options['others']


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

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",
),


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

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


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

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


Теперь, если вы зайдёте в админпанель, то увидите в категории «Другие разделы» и ваш, только что созданный тестовый раздел. Одно но, иконка не отображается, и красный крест вместо неё мало радует глаз. А в чём проблема, давайте зайдём в папку engine/skins/images и загрузим туда любую иконку, которая вам нравится, и назовём её test.png. Желательно чтобы её размеры были 48*48, тогда, в админпанели будет царить гармония и симметрия. С разделом вроде разобрались, теперь сделаем возможным вход в данный раздел в админпанели, для этого нужно открыть доступ на файл администрирования, который мы пока не создали, но для дальнейших действий данный шаг является первоочередным. Итак, открываем файл admin.php любым текстовым редактором и видим там массив

$system_modules


Без тени сомнения добавляем туда и наш будущий файл администрирования модуля test_adm, а если быть более точным, вам необходимо добавить строку

'test_adm'=> 'admin'


Данная строка показывает, что файл test_adm.php будет доступен только админам. На этом мы разобрались со всеми доступами и можем приступить к созданию файла администрирования, о котором уже столько было сказано.
Итак, заходим в папку engine/inc и создаём там файл test_adm.php. Открываем данный файл в текстовом редакторе и добавляем туда следующий текст:

<?php
/* Подключаемые файлы */
<strong>require_once</strong>(ENGINE_DIR.'/inc/test.functions.php');
<strong>require_once</strong>(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, "<?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']}<br /><br />
      <a href=\"{$PHP_SELF}?mod=test_adm\">{$lang['db_prev']}</a>");
}

/**
* Вывод header
*/
echoheader("Test", "Админпанель модуля test");

/**
* Вывод блока настроек
*/
opentable();
tableheader('Настройка модуля');
echo<<<HTML
<form action="" method="POST">
<table width="100%">
  <tr>
    <td class="option" style="padding:4px;">
      <b> Текст выводимой строки: </b><br />
      <span class="small"> например: Hello world </span>
    <td align="middle" width="400">
      <input class="edit" style="text-align:center" size="40" value="{$config_test['text']}" name="save_con[text]"></td>
  </tr>
  
  <tr><td background="engine/skins/images/mline.gif" height="1" colspan="2"></td></tr>
  
  <tr>
    <td class="option" style="padding:4px;">
       <b> Комментарий к тексту: </b><br />
       <span class="small"> например: Это ваш первый пример модуля с админпанелью </span>
    <td align="middle" width="400">
       <input class="edit" style="text-align:center" size="40" value="{$config_test['detail']}" name="save_con[detail]"></td>
  </tr>
  
  <tr><td background="engine/skins/images/mline.gif" height="1" colspan="2"></td></tr>
  
  <tr>
    <td class="option" style="padding-bottom:10px; padding-top:10px; padding-left:10px;" colspan="2">
      <input class="buttons" type="hidden" name="action" value="dosave" />
      <input class="buttons" type="submit" name="do" value=" Сохранить " /></td>
  </tr>
  
</table>
</form>
HTML;
closetable();


/**
* Вывод footer
*/
echofooter();
?>


Это самое сердце модуля в данном сценарии реализуется, как графическая веб-форма панели администрирования, так и сохранение введенных данных. В начале мы подключаем файлы test.functions.php и config.test.php. В первом из них реализованы функции, которые отвечают за создание дизайна админпанели, благодаря ним мы имеем более доступный код, неотегащённый лишним html кодом.
Приведу листинг файла test.functions.php, который будет необходимо создать в папке engine/inc.

<?php
if (!defined('DATALIFEENGINE')) {
    die("Hacking attempt!");
}

/**
* Элементы дизайна админпанели
*/
function opentable() {

echo <<<HTML
<table width="100%">
    <tr>
        <td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0"></td>
        <td background="engine/skins/images/tl_oo.gif"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0"></td>
        <td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0"></td>
    </tr>
    <tr>
        <td background="engine/skins/images/tl_lb.gif"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0"></td>
        <td style="padding:5px;" bgcolor="#FFFFFF">
HTML;
}

function closetable() {
echo <<<HTML
    </td>
        <td background="engine/skins/images/tl_rb.gif"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0"></td>
    </tr>
    <tr>
        <td><img src="engine/skins/images/tl_lu.gif" width="4" height="6" border="0"></td>
        <td background="engine/skins/images/tl_ub.gif"><img src="engine/skins/images/tl_ub.gif" width="1" height="6" border="0"></td>
        <td><img src="engine/skins/images/tl_ru.gif" width="6" height="6" border="0"></td>
    </tr>
</table>
HTML;
}

function tableheader($value) {
echo <<<HTML
<table width="100%">
    <tr>
        <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;">
          <div class="navigation">$value</div></td>
    </tr>
</table>
<div class="unterline"></div>
HTML;
}
?>


Далее необходимо создать пустой файл config.test.php в папке engine/data (не забудте установить на этот файл права chmod =777). Теперь снова приступим к разбору файла test_adm.php. После подключения файлов мы видим код отвечающий за сохранение введенных данных в веб-форме. Массив данных переданных методом POST заносится в файл config.test.php. Кроме того помимо переданных данных я решил включить в массив статические переменные не требующие частых изменений, в данном случае это переменная

'version' => "v.1.0",


она будет неизменной при изменения других данных через веб-форму.
И наконец, чтобы антивирус движка не ругался при сканирование сервера, нужно отредактировать файл antivirus.php, располагающийся в папке engine/ajax.
Открываем его в текстовом редакторе, и в длинную череду данных массива

$good_files


Добавляем:

"./engine/modules/test.php",
"./engine/data/config.test.php",
"./engine/inc/test.functions.php",
"./engine/inc/test_adm.php",

Ну что могу ещё сказать вроде всё, ничего не забыл. Можно попробовать вводить различные данные в веб-форме и в результате вы будете получать различный вывод на сайте. Надеюсь что данные примеры, помогут вам в освоение технологии создания модулей для DataLife и в скором времени вы сможет писать более сложные проекты.

Автор статьи: GreenFest


Дополнительные ссылки на скачивание ТОЛЬКО для зарегистрированных


Отредактировал GeBrieL - 2009-12-22
Причина: Автора надо указывать
+2
Просмотры: 38 476 :: Комментарии (24) :: :: Нужна помощь? Задайте вопрос на форуме ::
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1AlexSD

  • 22 декабря 2009 10:56
  • Регистрация: 12.11.2009
  • Был(а) онлайн: 28.11.2012
  • Комментариев: 54
  • -1
Отличная статейка! smile Надо будет попробовать что нибудь написать...

#2kaktus

  • 22 декабря 2009 11:06
  • Регистрация: 9.10.2009
  • Был(а) онлайн: 25.12.2018
  • Комментариев: 112
  • -1
Да, хорошая статья, автор Neo Matrix, он ещё раньше сборки дле делал.

#3ahab4ik

  • 22 декабря 2009 11:20
  • Регистрация: 26.10.2009
  • Был(а) онлайн: 20.06.2019
  • Комментариев: 99
  • -1
Статья полезная..Автору + !!

#4zikzik

  • 22 декабря 2009 13:25
  • Регистрация: 11.11.2009
  • Был(а) онлайн: 17.08.2011
  • Комментариев: 81
  • -1
отличная статья. заинтересовало респект Neo Matrix у.

--------------------

#5bizarre

  • 22 декабря 2009 14:20
  • Регистрация: 28.11.2009
  • Был(а) онлайн: 17.01.2010
  • Комментариев: 29
  • -1
Хорошая статься,рекпект

#6MysterIoes

  • 22 декабря 2009 14:22
  • Регистрация: 22.11.2009
  • Был(а) онлайн: 15.02.2014
  • Комментариев: 356
  • -1
WorM
статья для всех версий ДЛЕ пойдет?

#7FTN

  • 22 декабря 2009 15:54
  • Регистрация: 30.09.2009
  • Был(а) онлайн: 21.10.2014
  • Комментариев: 91
  • -1
нет не ниже DLE 7.5! mail

--------------------

#8dw13

  • 22 декабря 2009 20:53
  • Регистрация: 25.11.2009
  • Был(а) онлайн: 18.10.2011
  • Комментариев: 15
  • -1
8.3
файл install.php

<?php


$dle_api->install_admin_module('Файл админпанели(test)', "Модуль **** ",
"Настройки модуля **** ", '(картинка)test.png', '(доступ)1');

?>


файл админки модуля в engine/inc/test.php

<?php

function OpenTable($infoTable) {
    echo <<< HTML
<div   >
<table width="100%">
<tr>
<td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0"></td>
<td background="engine/skins/images/tl_oo.gif"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0"></td>
<td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0"></td>
</tr>
<tr>
<td background="engine/skins/images/tl_lb.gif"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0"></td>
<td style="padding:5px;" bgcolor="#FFFFFF">
<center><h4>$infoTable </h4></center>
<table width="100%">
<tr>
<td style="padding:2px;">

HTML;
}
function CloseTable() {
    echo <<< HTML
</td>
</tr>
</table>
</td>

<td background="engine/skins/images/tl_rb.gif"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0"></td>
</tr>
<tr>
<td><img src="engine/skins/images/tl_lu.gif" width="4" height="6" border="0"></td>
<td background="engine/skins/images/tl_ub.gif"><img src="engine/skins/images/tl_ub.gif" width="1" height="6" border="0"></td>
<td><img src="engine/skins/images/tl_ru.gif" width="6" height="6" border="0"></td>
</tr>
</table></div>

HTML;
}

echoheader("", "Админпанель модуля ***********");

OpenTable($infoTable = "********");
/*Ваш говнокод*/
closetable();

?>

#9fenom

  • 22 декабря 2009 21:17
  • Регистрация: 6.07.2009
  • Был(а) онлайн: 19.03.2019
  • Комментариев: 345
  • -1
автора надо указывать.
WorM автор кто? Neo Matrix ?

--------------------

#10WorM

  • 22 декабря 2009 21:58
  • Регистрация: 31.08.2009
  • Был(а) онлайн: 25.08.2015
  • Комментариев: 125
  • -1
Вообще где я смотрел автор: GreenFest

--------------------

#11paradox

  • 23 декабря 2009 10:42
  • Регистрация: 7.11.2009
  • Был(а) онлайн: 11.03.2016
  • Комментариев: 92
  • -1
ilja,
'test_adm'=> 'admin'

насколько я понял это для admin.php, наверно до 8.2

#12ivantu

  • 23 декабря 2009 11:53
  • Регистрация: 17.12.2009
  • Был(а) онлайн: 3.10.2018
  • Комментариев: 73
  • -1
Спасиба огромное очень помогли,Давно искал эту вещь!

--------------------

#13Tekogero

  • 24 декабря 2009 19:54
  • Регистрация: 9.10.2009
  • Был(а) онлайн: 15.08.2024
  • Комментариев: 81
  • -1
Оооо... Автор, облегчил жизнь!... Как раз нужно было писать модуль для 1 шаблона... :) Буду трудиться, мби после Н.Г. выложу всё :)

#14WorM

  • 26 декабря 2009 17:05
  • Регистрация: 31.08.2009
  • Был(а) онлайн: 25.08.2015
  • Комментариев: 125
  • -1
Постараюсь по больше для вас таких статей находить)

--------------------

#15Keag

  • 10 января 2010 23:52
  • Регистрация: 8.01.2010
  • Был(а) онлайн: 14.03.2010
  • Комментариев: 25
  • -1
класс!!!!
наконецто нашел мануал про админку!!!!
ура!!!
спасибо!

#16zasranec

  • 11 января 2010 00:08
  • Регистрация: 25.10.2009
  • Был(а) онлайн: 30.07.2015
  • Комментариев: 195
  • -1
Keag,
типа их все спрятали))))
dw13
спасибо за разъяснение по версии 8.3

#17Keag

  • 14 января 2010 15:20
  • Регистрация: 8.01.2010
  • Был(а) онлайн: 14.03.2010
  • Комментариев: 25
  • -1
zasranec,
да нет, не спрятали!!!
просто не мог найти!!!!!!!

#18bomoslik

  • 23 ноября 2010 22:07
  • Регистрация: 17.11.2010
  • Был(а) онлайн: 6.10.2014
  • Комментариев: 40
  • -1
спасибо, попробуемс )

--------------------

#19djbarhat

  • 13 ноября 2011 19:08
  • Регистрация: 22.06.2011
  • Был(а) онлайн: 5.11.2014
  • Комментариев: 32
  • -1
как в admin.php
внутри написать
'addnews' => 'user',
'afisha' => 'admin',
скажите плз ...
заплачу 50 р
dle 8.3

#20djbarhat

  • 13 ноября 2011 20:23
  • Регистрация: 22.06.2011
  • Был(а) онлайн: 5.11.2014
  • Комментариев: 32
  • +1
спасибо сделал уже

1 2
Предыдущая    Следующая
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Архив новостей
Ноябрь 2024 (9)
Октябрь 2024 (169)
Сентябрь 2024 (13)
Август 2024 (60)
Июль 2024 (12)
Июнь 2024 (30)

Последние комментарии: