Добрый день. Имеется два кода:
Первый (исходник):
И второй (рабочий на DLE):
Так вот, как вы поняли, 2 код работает на DLE, первый нет. Нужно адаптировать первый код, по мотивам второго. Либо же сделать по-другому: первый раз нужно нажимать на "загрузить ещё", а все последующие должны загружать новости автоматически (собственно это и есть описание первого кода). Сам попробовал.. не получается. Кто может справиться?..
Первый (исходник):
| Код |
|---|
<div class='infinite-scroll-button'>
<a href="#" onclick="EnableInfiniteScroll(); return false;"></a>
</div>
</div>
<script>
//<![CDATA[
$(function(){
var wnd = $(window), doc = $(document), ftr = $('#footer')
var left_column = $('#left-column'),
middle_column = $('#middle-column'),
right_column = $('#aside')
function showPosts(posts){
left_column
.append(posts[0])
.append(posts[1])
.append(posts[2])
middle_column
.append(posts[3])
.append(posts[4])
.append(posts[5])
right_column
.append(posts[6])
.append(posts[7])
.append(posts[8])
}
window.EnableInfiniteScroll = function(){
// Скрыть кнопку активации и начать моргать кошкой
$('.infinite-scroll-button').hide()
Fotki.blink_kitty()
var page = 0, ajaxed = false
function BottomPos(el){
return el.offset().top + el.height()
}
function AjaxIt(){
var window_bottom_position = wnd.scrollTop() + wnd.height()
var start_scroll_at = 1e100, start_scroll_off = 150
start_scroll_at = Math.min(start_scroll_at, BottomPos(left_column))
start_scroll_at = Math.min(start_scroll_at, BottomPos(middle_column))
start_scroll_at = Math.min(start_scroll_at, BottomPos(right_column))
if (window_bottom_position >= start_scroll_at - start_scroll_off && !ajaxed){
ajaxed = true
$.ajax({
url: '/',
data: {
format: 'js',
page: ++page,
count: 9,
offset: 56
},
success: function(data){
Analytic.page_view("/") // счетчик главной страницы
ajaxed = false
showPosts(data)
},
error: function(xhr, msg, err){
ajaxed = false
console.log('Error while loading page ' + page + ' via ajax!')
console.log(xhr)
console.log(msg)
console.log(err)
},
dataType: 'json'
})
}
}
wnd.scroll(AjaxIt)
AjaxIt()
}
})
//]]>
</script> |
И второй (рабочий на DLE):
| Код |
|---|
<script language="javascript" type="text/javascript">
var navAjaxUrlIE = /*@cc_on!@*/false;
var lastExtNewsUrl = "";
var lastExtNewsPage = 0;
var mainClassNewsNavigation = "bnnavi"; // navigation.tpl - название класса основного элемента
function loadExtNews(){
$('.bnnavi').hide()
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>
|
Изменено:
LeWin - 2 Июля 2013 19:14
