AJAX навигация в теге Custom - реализация для DLE

AJAX навигация в теге Custom - реализация

AJAX навигация в теге Custom - реализация

Не так давно я писал статью о невозможности ajax навигации в теге custom. Но так же я в ней упомянул о возможности создания этой самой навигации, но на костылях.
Вот решил поделиться с вами данной реализацией в качестве подарка. С Новым Годом!
Суть данного метода заключается в том, что в момент создания самого Custom блока идет перехват и обработка его параметров с последующим сохранением в сессии. Таким образом мы получаем полноценно работающую навигацию и полностью скрытый от пользователя код. Но как и любой костыль, этот тоже имеет определенный минус. Т.к. параметры хранятся в сессии, то по истечении времени хранения сессии пользователю надо будет обновить страницу сайта, чтобы навигация работала и блок отображался.

Собственно пример работы можете посмотреть у меня на демо сайте d101.sandev.pro
А так же добавил его тут, на sandev.pro в блоке Топ дня

Установка
Открыть файл 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));
	}


В папке engine/ajax/ создать файл custom.php с содержимым:


В папке engine/modules/ создать файл custom_navigation.php с содержимым:


В любом подключенном к шаблону JS файле прописать код функции:
function custom_navigation(id,p){
	$.get(dle_root+"engine/ajax/custom.php",{id:id,page:p},function(d){
		$("#"+id).html(d);
	});
	return false;
}


И основная часть - шаблон:
<div id="custom-ajax-test">
	&#123;custom category="8" from="0" limit="5" idblock="custom-ajax-test"}
	&#123;include file="engine/modules/custom_navigation.php?id=custom-ajax-test"}
</div>

Обратите внимание, что custom-ajax-test повторяется 3 раза. Это и есть ID блока в котором будут меняться страницы.
Так же последние 3 параметра тега custom - являются строго обязательными к заполнению, в том числе from="0"

Настройку стилей и шаблонов возложу на ваши хрупкие плечи. Уверен, вы справитесь ;)

С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (5)
  1. foto
    Посетитель 14 января 2014 23:21 #
    Sander. а как можно вывести навигацию в отдельный блок/место?
    +1
  2. foto
    Посетитель 6 февраля 2014 07:22 #
    Отличный хак! Спасибо!
    0
  3. foto
    Посетитель 9 февраля 2014 17:12 #
    i nikak ni ponel kak eta dabavit na plockpro
    mojet pamojite
    spasibo
    0
  4. foto
    Посетитель 24 февраля 2014 13:28 #
    Можете помочь с scrollto. Или примерно как ево прикрутить сюда?
    0
  5. foto
    Посетитель 8 мая 2017 13:52 #
    Круто! Но не подскажете как сделать чтобы выводились новости не затирая предыдущие и чтобы одна кнопка была "Ещё новости". Типа так, надеюсь понятен вопрос? Хочется сделать так, чтобы вывод был в виде подргрузки новостей, но чтобы сам пользователь нажимал кнопочку если хочет чтобы еще подгрузилась очередная следующая порция новостей.
    0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.