div의 무한 스크롤을이 테마의 설정에 기반하여 작동 시키려고합니다. 목록 하단에 "load more"링크가있어 클릭하면 아약스를 통해 콘텐츠가로드됩니다. 나는 WP (최신)와 Buddypress (최신)와 함께 일하고 있습니다. 기본적으로 쿼리와 PHP에서 최선이 아니기 때문에 약간의 트릭을 발견했습니다. 반작용은 트리거 된 "클릭"을 유발하고 콘텐츠를로드하기 때문에 작동하지만 사용자가 계속 스크롤 할 때마다 콘텐츠를 계속로드합니다. 마지막 두 세트 (중복)를로드 한 다음 스크롤 당로드 할 내용이 없을 때 오류를 표시합니다.이 오류는 기본적으로 페이지로드 중에로드 할 내용이없는 경우에만 표시됩니다. 첫째, 이것은 "부하가 더"링크가 작동하는 데 사용되는 스크립트입니다 :jquery trigger를 사용하여 무한 스크롤을 구현하는 방법
jq('div.activity').click(function(event) {
var target = jq(event.target);
if (target.parent().hasClass('load-more')) {
jq("li.load-more").addClass('loading');
if (null == jq.cookie('bp-activity-oldestpage'))
jq.cookie('bp-activity-oldestpage', 1, {path: '/'});
var oldest_page = (jq.cookie('bp-activity-oldestpage') * 1) + 1;
jq.post(ajaxurl, {
action: 'activity_get_older_updates',
'cookie': encodeURIComponent(document.cookie),
'page': oldest_page
},
function(response)
{
jq("#content li.load-more").removeClass('loading');
jq.cookie('bp-activity-oldestpage', oldest_page, {path: '/'});
jq("#content ul.activity-list").append(response.contents, function(){
jq('li.post').hide().each(function(index) {
timeOuts[index] = setTimeout(myFadeIn, index*100, jq(this));
});
});
target.parent().hide();
}, 'json');
return false;
}
});
});
이 그 주위에 약간의 작업이 사용자가 #content div의 끝으로 스크롤 한 해당 링크를 클릭하여 트리거입니다 : 여기
jq(function($) {
$('#content').bind('scroll', function() {
if($(this).scrollTop() +
$(this).innerHeight()
>= $(this)[0].scrollHeight)
{
jq("#content li.load-more a").trigger('click', function(e){
e.preventDefault();
});
}
})
});
은 넣다 루프가 포함 된 html로이다 :
<div id="content">
<div class="activity">
<?php if (bp_has_activities(bp_ajax_querystring('activity'))) : ?>
<?php /* Show pagination if JS is not enabled, since the "Load More" link will do nothing */ ?>
<noscript>
<div class="pagination">
<div class="pag-count"><?php bp_activity_pagination_count(); ?></div>
<div class="pagination-links"><?php bp_activity_pagination_links(); ?></div>
</div>
</noscript>
<?php if (empty($_POST['page'])) : ?>
<ul id="activity-stream" class="activity-list item-list">
<?php endif; ?>
<?php while (bp_activities()) : bp_the_activity(); ?>
<?php locate_template(array('activity/entry.php'), true, false); ?>
<?php endwhile; ?>
<?php if (bp_activity_has_more_items()) : ?>
<li class="load-more yori">
<a class="thiss" href="#more"><?php _e('Load More', 'buddypress'); ?></a>
</li>
<?php endif; ?>
<?php if (empty($_POST['page'])) : ?>
</ul>
<?php endif; ?>
<?php else : ?>
<div id="message" class="info">
<p><?php _e('Sorry, there was no activity found. Please try a different filter.', 'buddypress'); ?></p>
</div>
<?php endif; ?>
</div>
</div>
내가 말했듯이, 작동을하지만 난 청소기 방식이 알고 원인이 오류와 오히려 실수와 함께 제공 돈이 없어. 전자 권자. 그게 내가 알아 내려고하는거야. 나는 WP에서 하나를 포함하여 너무 많은 무한한 스크롤 플러그인을 시도했지만, 내가 뭘하려고하는지 함께 작동하지 않는 것. 임씨는 부도ypress가 "로드 - 더"설정 방식과 관련이 있다고 생각합니다. 나는 너희들이 될 수도 있습니다 워드 프레스 플러그인 당신을 위해 유용합니다 :)
나는 지금 그것을 추가하려하고있다. 그러나이 스크롤은 div의 내부에서 작동 할까? – Sin
div 스크롤시에만 ajax 새 항목을로드하려면 div 요소에 적용하기 위해 javascript/jquery 이벤트 수신기를 변경할 수 있습니다. 희망이 도움이됩니다. –
달콤한! 나는 그것이 작동하도록했습니다, 지금 내 유일한 문제는로드 된 항목의 다음 세트를 요구하기 전에 div의 높이라고 생각합니다. 내 div 높이는 473px이며, 자바 스크립트는'.height()'에 대해 -500을가집니다. 나는 그것을 다시 알아낼 수있다. 다시 한번 고마워, 너는 이것 때문에 끝내 준다! – Sin