Скачать Сворачивающиеся блоки 2.1 (AJAX)
Автор: MSW
ICQ: 365-888
Версия DataLife Engine: 8.3
Пример: _http://megafile.mksat.net/
Продолжение серии модуля: "Блоки как вконтакте"
Данный модуль позволяет создать на сайте сворачивающиеся и разворачивающиеся блоки. Каждый посетитель сайта может по собственному желанию свернуть/развернуть тот или иной блок для себя. После перезагрузки страницы блоки останутся в установленом положении.
Изменения относительно старых версий:
- динамическая подгрузка, после изменения, содержимого блока средствами AJAX
- возможность сворачивать/разворачивать содержимое тегов, по типу календарь, голосование, архив и т.д.
Установка:
Создать/отредактировать файл: /templates/ваш_шаблон/js/block.js
function block_ajax(id,z) {
var ajax = new dle_ajax();
ajax.setVar("action", z);
ajax.setVar("edit", 1);
ajax.requestFile = dle_root+"engine/modules/block/"+id+".php";
ajax.method = 'POST';
ajax.element = id;
ajax.sendAJAX("");
return false;
}
Файл: main.tpl
Найти:
</head>
Добавить выше:
<script type="text/javascript" src="{THEME}/js/block.js"></script>
Создать файл: /engine/modules/block/test.php
<?php
/*
================================
Сворачивающиеся блоки 2.1
================================
Автор: MSW
================================
ICQ: 365-888
================================
*/
//***** Настройка *** начало *****//
/*Внимание!
переменная $name_block - должна совпадать с названием файла, а также, в случае для тегов календарь, голосование и т.д. с именем этого тега!
*/
$name_block = "test";
//***** Настройка *** конец *****//
if($_REQUEST['edit']) {
define('DATALIFEENGINE', true);
define('ROOT_DIR', '../../..');
define('ENGINE_DIR', '../..');
include ENGINE_DIR . '/data/config.php';
require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/functions.php';
include_once ENGINE_DIR . '/classes/templates.class.php';
include_once ENGINE_DIR . '/init.php';
@header("Content-type: text/css; charset=windows-1251");
if($_REQUEST["action"] == "off") {
setcookie($name_block, 1, time()+32140800, "/");
$cookie = 1;
} else {
setcookie($name_block, "", time()-60, "/");
$cookie = 0;
}
} else {
$cookie = $_COOKIE["{$name_block}"];
}
$content = "<div id=\"{$name_block}\">";
if($cookie == 1) {
///свёрнутый блок
$content .= <<<HTML
<table>
<tr onclick="block_ajax('{$name_block}','on')" style="cursor:pointer;">
<th>Заголовок блока</th>
</tr>
</table>
HTML;
} else {
//развёрнутый блок
/* Особенности:
- В случае для архива:
$block = ($_REQUEST['edit'] == 1) ? $tpl->result["archive"] : $this->data['{archives}'];
- Для других тегов:
$n = "{".$name_block."}";
$block = ($_REQUEST['edit'] == 1) ? $tpl->result[$name_block] : $this->data[$n];
в содержимое блока выводить переменную: $block
*/
$content .= <<<HTML
<table>
<tr onclick="block_ajax('{$name_block}','off')" style="cursor:pointer;">
<th>Заголовок блока</th>
</tr>
<tr>
<td>Содержимое блока</td>
</tr>
</table>
HTML;
}
$content .="</div>";
echo $content;
?>
В нужном месте для вывода блока:
{include file="engine/modules/block/test.php"}