Раздел Название темы Ответов Последний
Халява / Бесплатное в Сети Запрос на слив с SHAREWOOD 0 Dle3
Мануалы / Статьи [Nastyashardakova] Способы заработка и продвижения ... 0 Dle3
Мануалы / Статьи [Игорь Градов] Обучение по заработку на сайтах в и ... 0 Dle3
Другие CMS KStore v1.0.0 - многофункциональная тема OpenCart ... 0 Dle3
Мануалы / Статьи Актуальные SEO-стратегии (2020) 0 Dle3

AJAX загрузка страниц новостей как в твитере для Dle 9.0 - 10.x

Хаки для DLE 10 ноябрь 2013 Добавил: Dle3
  • 80
Информация предоставлена сайтом dle3.ru исключительно в ознакомительных целях. Администрация сайта не несет ответственности за его содержимое.
Скачать бесплатно AJAX загрузка страниц новостей как в твитере для Dle 9.0 - 10.x.

AJAX загрузка страниц новостей как в твитере  для Dle 9.0 - 10.x

Модуль будет работать почти на всех версиях движка DLE. Он не изменяет код самого ядра, а устанавливается только в шаблон, не имеет ни одного файла в дистрибутиве, и при обнолении движка не возникнет проблем.

Суть работы модуля заключается в следующем:

Вы зашли на страницу, где выводится список новостей с навигацией.
После полной загрузки страницы начинает работать специальный javascript код.
Код ищет на странице элемент навигации, и всё существующее заменяет на одну ссылку "Загрузить ещё".
При нажатии на эту самую кнопку, посылается AJAX запрос к сайту, идёт подгрузка полной версии следующей страницы.
После получения кода страницы, идёт выборка основного контента (из тега {content}).
После выборки контента, он добавляется к текущему, тем самым показывая новые новости.
Также плагин автоматически меняет адрес в строке браузера, чтобы при обновлении страницы, пользователь видел последние полученные новости.
Если движок посылает ошибку 404 или другую, тем самым кнопка становится не активной и на ней написано "Новостей больше нет".

Для установки плагина достаточно открыть файл шаблона main.tpl и перед закрывающимся тегом "" вставить:
[aviable=main|cat]
<script language="javascript" type="text/javascript">

var navAjaxUrlIE = /*@cc_on!@*/false;
var lastExtNewsUrl = "";
var lastExtNewsPage = 0;
var mainClassNewsNavigation = "basenavi"; // navigation.tpl - название класса основного элемента
function loadExtNews(){

if( lastExtNewsUrl )
{
var url = lastExtNewsUrl.replace( "/page/" + lastExtNewsPage, "/page/" + ( lastExtNewsPage + 1 ) ) + "";
lastExtNewsPage++;
}
else
{
var url = location.href;
url = url.replace( new RegExp( "#(.*)", "g" ), "" ) + "";

var RegExpC = new RegExp( "/page/([0-9]+)", "g" );
if( url.match( RegExpC ) )
{
var page = url.match( /page\/[0-9]{1,50}/ ) + "";
page = parseInt( page.match( /[0-9]{1,50}/ ) );
var newPage = page + 1;
url = url.replace( "/page/" + page, "/page/" + newPage ) + "";
lastExtNewsPage = newPage;
}
else
{
url = url + "page/2/";
lastExtNewsPage = 2;
}
}

lastExtNewsUrl = url;

$( "#dle-content ." + mainClassNewsNavigation + " a" ).html( "<span>Идёт загрузка...</span>" );

$.ajax({
url: url,
data: "",
success: function( data ){

//var parser = new DOMParser();
//var doc = parser.parseFromString( data, "text/html" );
//$( "#dle-content ." + mainClassNewsNavigation ).remove();
//$( "#dle-content" ).html( $( "#dle-content" ).html() + doc.getElementById( "dle-content" ).innerHTML );

var cont = $( data ).find( "#dle-content" );
$( "#dle-content ." + mainClassNewsNavigation ).remove();
$( "#dle-content" ).html( $( "#dle-content" ).html() + $( cont[0] ).html() );
$( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"loadExtNews(); return false;\" class=\"loadExtNews\"><span>Загрузить ещё</span></a>" );

if( !navAjaxUrlIE ) history.pushState( {}, "", lastExtNewsUrl );
},
error: function( xhr, ajaxOptions, thrownError ){
// Можно по номеру ошибки определять, но в любом случае ответ не тот, показывать нечего, страхуемся )))
$( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"return false;\" class=\"loadExtNews\"><span>Новостей больше нет</span></a>" );
},
dataType: "html",
type: "POST"
});
}
$( document ).ready(
function(){
$( "#dle-content ." + mainClassNewsNavigation ).html( "<a href=\"#\" onclick=\"loadExtNews(); return false;\" class=\"loadExtNews\"><span>Загрузить ещё</span></a>" );
}
);
</script>
[/aviable]

Если у вас имеются проблемы с кодировкой, то вам необходимо в файл .htaccess, который находится в корне сайта добавить следующую строчку:

#Кодировка сайта, если у вас другая, то поменяйте
AddDefaultCharset windows-1251


Ну и небольшие настройки модуля:

[aviable=main|cat] - собственно настраиваете страницы, на которых будет работать навигация (можно например добавить на закладки, теги, архив и т.д.)
var mainClassNewsNavigation = "basenavi"; - название класса основного элемента в файле шаблона navigation.tpl


Можно также переместить код в отдельный js файл, и на странице подгружать примерно так:

    [aviable=main|cat]<script language="javascript" type="text/javascript" src="{THEME}/js/navigation.js"></script>[/aviable]


Скрипт был проверен в 4 браузерах последних версиях на момент публикации: Mozilla Firefox, Google Chrome, Opera, Internet Explorer.
podgruzka-stranic-novostei-kak-v-tvitere.zip [1,9 Kb] (cкачиваний: 36)

Коммент Комментариев: 6          Нашли ошибку в тексте?
recomend
  1. ava

    Написал: Вадим
    Группа: Посетители Пользователь offline
    1
    15 ноября 2013 14:25
    Хорошая задумка с прокруточкой

  2. ava

    Написал: top103
    Группа: Посетители Пользователь offline
    2
    9 декабря 2013 23:44
    Отличный модуль. спасибо за раздачу

  3. ava

    Написал: top103
    Группа: Посетители Пользователь offline
    3
    11 декабря 2013 23:06
    Отличный модуль. респект за раздачу

  4. ava

    Написал: vild
    Группа: Посетители Пользователь offline
    4
    6 января 2014 17:05
    Шикарный модуль, давно искал что-то подобное wink

  5. ava

    Написал: Revolver
    Группа: Посетители Пользователь offline
    5
    16 марта 2014 12:44
    А можно пример скинуть как это выглядит. Меня заинтересовало.

  6. ava

    Написал: Antiment
    Группа: Посетители Пользователь offline
    6
    26 марта 2014 09:20
    Да модуль действительно хорош, для меня именно от граббинга новостей с моего сайта хорошая защита дальше 1-й страницы.

Попасть в историю, Комментировать =)
    Имя:* E-Mail:*