0

我正在使用 jQuery Infinite Scroll 插件 - https://github.com/paulirish/infinite-scroll/ 来显示我的分页 WordPress 评论。

该插件在查看从旧到新的评论时工作正常(我认为这是默认选项),但如果 WordPress 中的讨论选项设置为以下:

Break comments into pages with [XX] top level comments per page and the
[LAST] page displayed by default

Comments should be displayed with the [NEWER] comments at the top of each page

然后无限滚动不再起作用。

看问题,好像是因为如果设置如上,那么WordPress会显示的第一个评论页面是最后一个,所以即

WordPress 1st comment page displayed = http://MYLINK/comment-page-5
WordPress 2nd comment page displayed = http://MYLINK/comment-page-4
WordPress 3rd comment page displayed = http://MYLINK/comment-page-3

等等

但是,我认为Infinite Scroll 想要增加每一页,所以在显示第一页(实际上是第 5 页)之后,Infinite Scroll 正在寻找不存在的第 6 页。

查看 IS 选项,有一个pathParse选项 - 但没有说明如何使用它的文档。我什至不能 100% 确定这是否会有所帮助。

我(和许多其他人)会非常感谢您提供的任何帮助。

4

3 回答 3

2

Thought Id 在这里提供了一个更简单的解决方案。我没有尝试更改插件,而是发现(经过几天和几天的尝试)更容易反转评论数组。只需将其添加到您的functions.php(来自这里

if (!function_exists('iweb_reverse_comments')) {
function iweb_reverse_comments($comments) {
    return array_reverse($comments);
    }   
}
add_filter ('comments_array', 'iweb_reverse_comments');

这样,infinitescroll js 就可以保持原样。此外,您只需将 Wordpress 设置 > 讨论保留为默认设置。

于 2013-07-08T20:44:40.107 回答
0

插件从选择器获取下一个要加载的 URL div.navigation a:first。它的 href 属性作为路径传递给下一页的 ajax 请求。在控制台中尝试那个 jQuery 选择器,看看它会产生什么;然后,您可以更改插件以重写选择器,或者更改您的 HTML 以便选择器获得正确的匹配。

尝试 2

解析问题不是因为编号;它正在寻找page=3并且您的链接是page-3. 假设无法更改,但您可以按照建议添加 pathParse 方法(在代码中注释掉类似方法的地方添加此方法):

 ,pathParse:function(path,nextPage){
   path = path.match(/page[-=]([0-9]*)/).slice(1);
   return path;
 }

然后让它正确地减少而不是增加我目前能看到的唯一方法是将第 493 行(在 WP 插件的开发版本中)更改为读取

opts.state.currPage--;
于 2012-07-09T15:28:33.253 回答
0

我似乎已经为这个问题想出了一个(不完全优雅的)解决方案。

非常感谢@M1ke 的帮助。

好的,

因此,首先,您需要使用 pathParse 函数,因此您可以在其中定义 Infinite Scroll 选项:

加入

.infinitescroll({
    state: {
      currPage: 4 // The number of the first comment page loaded, you can generate this number dynamically to save changing it manually
    },        

    pathParse: function(path,nextPage){
        path = ['comment-page-','#comments'];
        return path;
    }
});

然后,您需要调整主插件文件(jquery.infinitescroll.js 或 .min 版本),因为似乎没有其他方法可以做到这一点。因此,找到包含以下内容的部分:

// increment the URL bit. e.g. /page/3/
opts.state.currPage++;

并更改为

// decrement the URL bit. e.g. /page/3/
if (opts.state.currPage > 1) {
    opts.state.currPage--;
}
else if (opts.state.currPage == 1) {
    console.log("Last Page"); // Just needed for debugging              
    opts.state.currPage = 999999; // stop IS from loading Comment Page 0 by giving it a page number that won't exist and will return a '404' to provide 'end' function.
}

此外,请确保以下部分:

this._debug('pathParse manual');
return opts.pathParse(path, this.options.state.currPage+1);

改为:

this._debug('pathParse manual');
return opts.pathParse(path, this.options.state.currPage);
于 2012-07-19T16:28:10.190 回答