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ページ)、InfiniteScrollは存在しない6ページを探します。

ISオプションを見ると、pathParseオプションがありますが、その使用方法を説明するドキュメントはありません。これが役立つかどうかは100%わかりません。

私(そして他の多くの人)はあなたが与えることができるどんな助けにも非常に感謝するでしょう。

4

3 に答える 3

2

より簡単な解決策でここに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');

このようにして、infinitescrolljsはそのままの状態を保つことができます。また、Wordpressの設定>ディスカッションをデフォルトのままにしておきます。

于 2013-07-08T20:44:40.107 に答える
0

div.navigation a:firstプラグインは、セレクターからロードする次のURLを取得します。この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の助けに感謝します。

Ok、

したがって、最初に、pathParse関数を使用する必要があるため、無限スクロールオプションを定義する場所は次のとおりです。

加える

.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 に答える