Хак - Блоки как вконтакте для DLE


Хаки для DLE - Хак - Блоки как вконтакте для DLE

Автор: MSW
ICQ: 365-888
Email: msw@mail.ru

Функционал: работает на аяксе, если меню было отключено пользователем - то при повторной загрузке/обновлении страницы содержимое блока загружено не будет!
что решило заявленные в первом посте недостатки

Теперь данный хак подходит только для ДЛЕ версии 8.2
Так как содержимое менюшек нужно будет перенести в отдельные пхп файлы и просто инклудить в шаблон.

Создаём файл: /templates/ваш_шаблон/js/block.js
Code
function setCookie(name, value, expiredays, path, domain, secure) {
  if (expiredays) {
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  var expires = exdate.toGMTString();
  }
  document.cookie = name + "=" + escape(value) +
  ((expiredays) ? "; expires=" + expires : "") +
  ((path) ? "; path=" + path : "") +
  ((domain) ? "; domain=" + domain : "") +
  ((secure) ? "; secure" : "");
}
function getCookie(name) {
  var cookie = " " + document.cookie;
  var search = " " + name + "=";
  var setStr = null;
  var offset = 0;
  var end = 0;
  if (cookie.length > 0) {
  offset = cookie.indexOf(search);
  if (offset != -1) {
  offset += search.length;
  end = cookie.indexOf(";", offset)
  if (end == -1) {
  end = cookie.length;
  }
  setStr = unescape(cookie.substring(offset, end));
  }
  }
  return setStr;
}
function block_ajax(id) {
  if(getCookie(id) == 1) {
  setCookie(id, 0, 90, "/");
  } else {
  setCookie(id, 1, 90, "/");
  }
  var ajax = new dle_ajax();
  ajax.setVar("id", id);
  ajax.setVar("edit", "1");
  ajax.requestFile = dle_root+"engine/modules/block/"+id+".php";
  ajax.method = 'POST';
  ajax.element = id;
  ajax.sendAJAX("");
  return false;
}


Создаём файл инклуженого меню: /engine/modules/block/test.php
Code
<?php
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';

@header("Content-type: text/css; charset=windows-1251");
}

$name = "test";

$cookie = $_COOKIE["{$name}"];

$content = "<div id=\"{$name}\">";

if($cookie == 1 || !isset($cookie))
{
$content .= <<<HTML
  <table>
  <tr onclick="block_ajax('{$name}')" style="cursor:pointer;">
  <th>Заголовок блока</th>
  </tr>
  <tr>
  <td>Содержимое блока</td>
  </tr>
  </table>
HTML;
}
else
{
$content .= <<<HTML
  <table>
  <tr onclick="block_ajax('{$name}')" style="cursor:pointer;">
  <th>Заголовок блока</th>
  </tr>
  </table>
HTML;
}
$content .= "</div>";

echo $content;
?>


Подключаем файл в шаблон: main.tpl
Найти:
Code
</head>


Добавить выше:
Code
<script type="text/javascript" src="{THEME}/js/block.js"></script>


В нужном месте для вывода блока:
Code
{include file="engine/modules/block/test.php"}


Готово.


  Категория: DLE-хаки | Добавил: AID | Дата: 21.01.2012
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Хостинг от uCoz