Здравствуйте, думаю многие из вас хотели бы написать приложение для 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 запросы…