
Первоклассный на https://dle9.com/ представляем DLE модуль AJAX навигация для тега Custom — это блок выводимый тегом Custom, где новости будут иметь навигацию на AJAX, при выборе страницы обновление происходит только в блоке, а вся страница остается прежней.
Хотя по сути полноценная навигация при помощи тега Custom невозможна, но если воспользоваться маленькими хитростями "костылями" можно сделать такую реализацию.
Принцип работы модуля дле: в момент создания самого новостного блока Custom идет перехват и обработка его параметров с последующим сохранением в сессии. В результате мы получаем полноценно работающую навигацию и полностью скрытый от пользователя код. Но как и любой костыль, этот тоже имеет свой недостаток. Т.к. параметры хранятся в сессии, то по истечении времени хранения сессии пользователю надо будет обновить страницу сайта, чтобы навигация работала и блок отображался.
Установка
В папку engine/ajax/ добавить из архива файл custom.php
В папку engine/modules/ добавить из архива файл custom_navigation.php
В любом подключенном к шаблону JS файле добавить код функции или создать файл в папке js/libs.js прописать в main.tpl в самом начале
<script type="text/javascript" src="/templates/Default/js/libs.js"></script>
до тега head, а в созданном файле js/libs.js добавить код ниже:function custom_navigation(id,p){
$.get(dle_root+"engine/ajax/custom.php",{id:id,page:p},function(d){
$("#"+id).html(d);
});
return false;
}
Открыть файл engine/modules/functions.php
Найти строку:
$sql_select .= " WHERE ".implode(' AND ', $where)." ORDER BY " . $fixed . $news_sort . " " . $news_msort . " LIMIT " . $custom_from . "," . $custom_limit;
ПЕРЕД ней вставить:
if(preg_match("#idblock=['"](.+?)['"]#i",$param_str,$match)){
$_SESSION['custom_'.$match[1]] = array("string"=>$param_str,"where"=>implode(' AND ', $where));
}
И основная часть - шаблон файла navigation.tpl:
<div id="custom-ajax-test">
{custom category="8" from="0" limit="5" idblock="custom-ajax-test"}
{include file="engine/modules/custom_navigation.php?id=custom-ajax-test"}
{include file="engine/modules/custom_navigation.php?id=custom-ajax-test"}
</div>
Обратите внимание, что custom-ajax-test будет 3 раза повторяться. Это и есть ID блоки в котором меняются страницы.
Обратите внимание на то, что последние 3 параметра тега custom т.е. (category="8" from="0" limit="5") являются строго обязательными к заполнению, в том числе from="0"
Оформление стилей и шаблонов делать придется вам самим. Уверен, вы справитесь ;)
Версия DataLife Engine 10
С уважением,
Олег Александрович a.k.a. Sander
Скачать у нас модули для dle, как DLE модуль AJAX навигация для тега Custom