Главная DLE шаблоны
Регистрация DLE модули
Форум DLE хаки
Логин:   Пароль: 


Шаблоны и модули для DLE » Главная » Учимся писать модули для DataLife
 
 
 
 
 
 
 
 
 
  Учимся писать модули для DataLife
В разделе: Главная
Размещена: 13 февраля 2008
Итак, приступим к делу. Возьмём любой сторонний скрипт, к примеру, скрипт который будет выводить да более знакомую и порядком, поднадоевшую фразу "Hello world".

Вот код скрипта:

<?php
echo 'Hello world';
?>


Создадим текстовый документ, занесём туда эти строки и сохраним его с расширением php. Назовём наш файл, к примеру, test.php. Далее мы поместим наш файл с кодом в папку engine/modules/ и на этом можем считать, что половина дела сделана, самая лёгкая половина. Теперь нужно разрешить нашему скрипту выполняться в среде движка по определённому запросу. Для этого мы отредактируем файл engine.php, который располагается в папке engine. Откроем его любым текстовым редактором и в самом начале увидим длинную цепочку, состоящую из операторов «выбора» case. Здесь мы ставим задачку перед нашим движком, и ему приходится решать, какой модуль подгрузить в зависимости от переданных ему параметров. Для наглядности приведу пример. Вот мы вбиваем в адресной строке браузера ссылку следующего вида:

http://your_site.ru/index.php?do= register


Если вы знакомы с азами протокола tcp/ip, то вы с лёгкостью можете сказать, что по данной ссылке происходит передача переменной do со значением register на обработку сценарием index.php. Но в действительности данную строку будет обрабатывать не index.php, а файл engine.php, который благодаря функции включения (require_once) внедряется в index.php. Итак мы разобрались, каким образом переменные из браузера поступают в сценарий, теперь посмотрим как они обрабатываются. Открыв файл engine.php, мы в самом его начале можем увидеть следующую строку

if (isset ($_REQUEST['do'])) $do = $_REQUEST['do']; else $do = "";


она то и принимает на себя весь «огневой удар» переменных переданных из браузера, здесь как мы видим, в зависимости от того была ли переданная переменная сценарию или нет, происходит создание локальных переменных. Если переменная была передана, то мы создаём её локальный прототип и направляем в оператор switch. И там уже решается, какой модуль подгружать в зависимости от переданного параметра. В нашем случае мы передаём нашему сценарию значение register. Для этого случая предусмотрено подгружения модуля регистрации.

case "register" :
         include ENGINE_DIR.'/modules/register.php';
         break;


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

Добавим после строк:

case "register" :
        include ENGINE_DIR.'/modules/register.php';
        break;


Строки подгружения нашего скрипта:

case "test" :
        include ENGINE_DIR.'/modules/test.php';
        break;


Теперь при запросе из адресной строки браузера по ссылки

http://your_site.ru/index.php?do= test


будет выполняться ваш скрипт, но вот беда, строка Hello world выводится вне контента в самом верху сайта. Это не то, что вы ожидали? Мда, те шаги что мы проделали не последние. Придётся ещё немного потрудится. DataLife имеет шаблонную структуру и поэтому нам придётся для своего модуля создать шаблон, чтобы все данные которые выводятся после выполнения нашего скрипта, оказались в пределах контента. Для этого создадим простейший tpl файл, который будет содержать следующее:

<html>
<body>
{test}
</body>
</html>


Файл назовём test.tpl и поместим его в папку содержащую файлы шаблона сайта, к примеру в /templates/Default.
Далее мы откроем наш файл со скриптом и не много его отредактируем чтобы все его данные выводились в нашем шаблоне (test.tpl).

<?php

   $test = 'Hello world';

  // Подгружаем шаблон
     $tpl->load_template('test.tpl');
     $tpl->set('{test}', $test);
     $tpl->compile('content');
     $tpl->clear();
?>


Скрипт не много усложнился, но не более того. Воспользовавшись встроенным шаблонизатором мы подгружаем наш шаблон, затем заменяем в нём строку

{test}


на значение переменной нашего скрипта. Далее мы указываем, что наш шаблон должен располагаться в контенте сайта, и в завершение вызываем метод

(clear();)


Вот теперь у вас есть работающий пример создания модуля для DataLife. Я разобрал простейший пример, но этого вполне достаточно, чтобы понять механизм внедрения в движок стороннего скрипта. Для полного завершения нужного проделать ещё несколько операций, а именно сделать доступность данного модуля по красивой ссылки применив чпу. Для этого в корне сайта мы найдём файл .htaccess откроем его текстовым редактором и в конце файла перед строкой

#?>


добавим:

# вывод тестового модуля
RewriteRule ^test(/?)+$ /?do=test


Благодаря этой строчки ваш скрипт будет доступен по ссылкам:

http://your_site.ru/index.php?do= test


и

http://your_site.ru/ test


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

Открываем его в текстовом редакторе, и в длинную череду данных массива

$good_files


вставляем строку:

"./engine/modules/test.php",


Вот теперь ваш первый модуль имеет полную завершённость и вы можете насладится своим успехом в программирование под DataLife. Желаю успехов в постижение нового.

Автор: vssp.ru.

 (голосов: 8)
 
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.


Другие новости по теме:

  • Отступ между картинками
  • Баннеры через определенное кол-во новостей
  • Награды
  • Вывод Даты/Года и месяца/Дня недели
  • Вид ссылки в статической странице

  • Запостил: admin, Комментов: 7, Просмотров: 1838 Напечатать

    #1 написал: tokiosant 18 мая 2008 15:22
     
    Прикольная статейка! Спасибо, очень пригодится!
    ICQ: -- [цитировать]
    #2 написал: rutui 24 сентября 2008 12:07
     
    Здорово! smile, давайте еще smile smile smile, супер smile smile.
    ICQ: -- [цитировать]
    #3 написал: Mr.Smith 17 октября 2008 01:27
     
    Спасибо - нужная статейка
    ICQ: -- [цитировать]
    #4 написал: iloveguru 17 октября 2008 07:22
     
    Сальвадор Дали и Сюрреализм.
    СМИ сайт Get-Newz.com.
    Фильмы myinfoz.ru, музыка.
    Картон Мульты онлайн.
    минская школа №1.
    веб блог программиста.
    ICQ: -- [цитировать]
    #5 написал: celer 18 октября 2008 11:06
     
    ICQ: -- [цитировать]
    #6 написал: Вася 21 октября 2008 11:26
     
    скачать фильм на быстрой скорости бесплатно!
    ICQ: -- [цитировать]
    #7 написал: Иван 24 октября 2008 11:33
     
    Может на более сложные примеры перейдем?

    Все о рекламе в регионах
    ICQ: -- [цитировать]
    Добавление комментария



     
    Что Вам более интересно на нашем сайте ?

    DLE шаблоны
    DLE модули
    Все вместе
     
     
     

    SMS.копилка

    Статьи, Информация
     
    сopyright © 2007-2008 diz1.org