Dle Ajax или как создать свой модуль


Здравствуйте, думаю многие из вас хотели бы написать приложение для DLE с использованием AJAX(без перезагрузки страниц), так давайте разберем пару функций и посмотрим пример маленького модуля…

Функции и переменные:
1. onShow (''); — функция которая показывает окно загрузки, вместо него можно и свое что-то сделать
2. encodeVAR — ну функция касающаяся кодировки
3. varsString — можно оставлять пустым (используется для отправки данных в скрипт)
4. setVar — тоже отправляет данные но лучше использовать эту функцию, а ту оставить пустой
5. requestFile — файл, который вызывает скрипт
6. method — метод отправки (POST, GET)
7. element — результат (отправляет результат в поле где id= значению поля)
8. onCompletion — можете использовать когда вы хотите чтобы после загрузки выполнялся еще одна функция
9. sendAJAX — переменные которые передаем
10. execute — оставляет все что до этого было в тегах с id который указался в element
11. add_html — не знаю), но юзаю

Пример мода:

Сейчас мы сделаем модуль который при нажатии в форме сабмит показывает данные которые отправились
1. Создаем engine/modules/mod.php
Пишем:

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

$tpl->load_template('mod.tpl');
$tpl->compile('content');
$tpl->clear();

?>

2. Создаем файл engine/ajax/mod.php
Пишем:


<?php
@session_start();
@error_reporting( E_ALL ^ E_NOTICE );
@ini_set( 'display_errors', true );
@ini_set( 'html_errors', false );
@ini_set( 'error_reporting', E_ALL ^ E_NOTICE );

define( 'DATALIFEENGINE', true );
define( 'ROOT_DIR', '../..' );
define( 'ENGINE_DIR', '..' );

include ENGINE_DIR . '/data/config.php';
@header("Content-type: text/css; charset=".$config['charset']);
if( $config['http_home_url'] == "" ) {

    $config['http_home_url'] = explode( "engine/ajax/mod.php", $_SERVER['PHP_SELF'] );
    $config['http_home_url'] = reset( $config['http_home_url'] );
    $config['http_home_url'] = "http://" . $_SERVER['HTTP_HOST'] . $config['http_home_url'];

}

echo $_POST['name'];
?>

3. Создаем шаблон templates/шаб/mod.tpl
Пишем:

<h2>Модуль от SOFTER</h2>
<br />
<form  method="post" name="dle-mod-form" id="dle-mod-form" action="">
<input type="text" id="name" name="name" value="Введите имя">
<br /><input type="button" onclick="domod();" value="Отправить">
</form>
<br />
<div id="dle-mod-results"></div>

4. Открываем engine/engine.php
Найти:

switch ($do) {


После вставить:

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

5. Открываем engine/ajax/js_edit.js
В самом конце вставляем:

function domod()

{
    var ajax = new dle_ajax();
    var name = ajax.encodeVAR( document.getElementById('dle-mod-form').name.value );
    ajax.onShow ('');
    var varsString = "name=" + name;
    ajax.requestFile = dle_root + "engine/ajax/mod.php";
    ajax.method = 'POST';
    ajax.element = 'dle-mod-results';
    ajax.sendAJAX(varsString);

    return false;
};

и теперь по адресу site.ru/?do=mod вы можете протестировать свой модуль, в следующей части я научу вас передавать несколько полей + делать мощные ajax запросы…

источник