» » Сворачивающиеся блоки 2.1 (AJAX)

Сворачивающиеся блоки 2.1 (AJAX)

Сворачивающиеся блоки 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"}

Комментарии

а на 8.2 пойдёт ????

TipTop

Администраторы 27 января 2010 01:06
Цитата: kazyuka
а на 8.2 пойдёт ????


пойдет
kazyuka,
нет. придётся править 2 файла движка, чтоб ишёл на 8,2
На фига? В стандартном движке есть jQuery. Банальный гуглопоиск дасть пятьсот вариантов, как это можно сделать с помощью вышеуказанного скрипта. Я лично это сделал еще года полтора назад на kr.uz без всяких модулей и дополнительных скриптов.
0zz, здесь содержимое блока подгружается динамически а не просто прячется в спойлер
давно хотела сделать подобную фишку winked
а для 8.5 есть?
no

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Личные сообщения

Ваши переписки