top

ダイナミック・パブリッシングで頁分割(10) コメント編

使うことがあるかもしれないので覚え書き。MTのコメント一覧って、デフォルトではその記事内に全コメントが表示されるので、コメント数が多くなると頁がやたら長くなってかなりスクロールしないと一番下のコメントが読めなかったりします。通常は読むのに困るほどの数のコメントがつくことはないから、それでも別にいいのですが、もしコメント数が100~500くらいあったら??

例えば。MTの記事を掲示板のトピックに見立てて、MTで掲示板を作った場合。MTの質問掲示板なら1つの質問が解決するまでに100以上のコメントを要するなんてことはまずないと思いますが、これがファンサイトとなると状況が違ってきます。お題によってはファンの数だけ回答があったりするので、実際に何百という数字になってしまいます。もしそれをMTでやるとしたら頁分割しないととても表示してられないです。

ということでコメント一覧を頁分割する方法について。MT4からは<MTEntries>に関しては頁分割が導入されましたが、<MTComments>には使えません。ので、ここではSmartyを使います。やり方は記事の場合と同じです。

1.1頁に表示させる件数の設定
MT4をデフォルトで使っている場合、コメント部分はコメントモジュールに入っているので、コメントモジュールに以下の変更・追記を行います。<mt:Comments>を探し出して、以下の記述で置き換えます。赤字の数字の部分で1頁に表示する件数を決めます。2か所とも同じ数字にします。

{{assign var="epp" value=10}}
<mt:Comments lastn="10" offset="`$smarty.request.offset`" sort_order="descend">

*3.3以前の場合はエントリーテンプレートの中から<MTComments>を探し出して同じように書き換えます。
*コメントの表示順はsort_order="descend"で調整します。新しいコメントから表示させたい場合はdescend、古いコメントから表示させたい場合はascendにします。

2.分割用コードの書き換え
分割コードは以下の頁から好きなバリエーションを。

ダイナミック・パブリッシングで頁分割(1)
ダイナミック・パブリッシングで頁分割(4) バリエーション編

冒頭の一行を、以下のように赤字の部分を<$MTEntryCommentCount$>に差し替えます。

{{capture assign="count"}}<$MTEntryCommentCount$>{{/capture}}

3.【応用】コメントの表示順を全体は降順、頁内では昇順にする
フォーラム型掲示板のようにMTを使う場合。sort_order="descend"で全体を降順にした場合、頁内では一番新しいコメントが一番上に表示されます。が、会話を順を追って読む場合、下から上へ目線を動かすことになるのでちょっと読みづらいです。例えば1頁目には最新10件のコメントが表示されるとしても、その頁内では上から下へ(つまり昇順)コメントが表示されて欲しいと思いませんか。

これ、出来ます。やってみます。

コメントモジュールに以下の赤字の部分を追加します。

</mt:CommentsHeader>
<MTSetVarBlock name="comlist" prepend="1">
・・・略・・・
</MTSetVarBlock>
<mt:CommentsFooter>
<MTGetVar name="comlist">

</mt:CommentsHeader>から<mt:CommentsFooter>までの間をまるっと<MTSetVarBlock>で囲ってしまうのがポイントです。prepend="1"で次の繰返しを「前」に追加しているので、これで降順を昇順に並べ替えることが出来ます。それを<mt:CommentsFooter>内に書き出します。

*MTCSをデフォテンプレで使っている場合の注意
MTCSも基本は同じですが、デフォテンプレではコメントの返信をMTCommentRepliesやMTCommentRepliesRecurseで再帰的に繰り返す書き方になっているので、コメントモジュール中に</mt:CommentsHeader>や<mt:CommentsFooter>が何回も出てきますが、一番最初に出てくる</mt:CommentsHeader>の直下に<MTSetVarBlock>を入れます。</MTSetVarBlock>と<MTGetVar name="comlist">は一番最後に出てくる<mt:CommentsFooter>の直前・直後に入れます。途中に入れると変なことになりますのでご注意下さい。
なお、子コメントが多数ついて構造が複雑になっている場合、構造を保つために1頁に表示されるコメント数が必ずしも設定した数にならない場合がありますが、そこは適当に調整されて分割表示してくれてるみたいです。