パーソナルツール
現在の場所: ホーム plone SNS風味 コメント ページ化
書いた本
Plone 完全活用ガイド の Chapter 1, 2, 3, 11 を執筆しました。
plone のインストール、使い方から、機能・デザインのカスタマイズ、プロダクトの作り方まで、 plone のすべてがぎゅっと詰まっている書籍になっていると思います。
plone に興味がある人から、すでに使いこなしている方まで、ぜひ読んでみてください。
Plone 完全活用ガイドのサポートページ
ナビゲーション

 
文書操作

ページ化

作成者 takanori 最終変更日時 2005年09月01日 00時54分

コメントは初期状態ではネストされて全部まとめて表示されるので、これを平坦にし10コメントごとページを分けて表示するようにします。

目次

概要[overview]

plone では最初からアイテムにコメントがつけられる機能(discussion)が存在します。

このコメントがつけられる機能を使用して議論する場合、多数のコメントがついても1ページに全てのコメントが表示されるため、ページが長くなり見づらくなります。 (下の画像の右側に表示されているスクロールバーを見ると、ページの長さがわかります)

A lot of comments

ページ対応[page]

ページ対応は以下のような仕様で実装します。

  • 10コメントごとにページとしてまとめ表示をする。
  • 前後のページに移動できるようにする。
  • 初期表示時は最新のコメントが表示されるように最後のページにする。

コメントのページ単位表示を行うために、 フラット化 でも使用した plone_templates/viewThreadsAtBottom をさらにカスタマイズします。

初期状態ではコメントを取得する部分は下記のように記述されていて、単純に repeat でループして全権を表示しています。:

    <tal:getreplies repeat="reply python:portal.sort_modified_ascending(
                                         portal_discussion.getDiscussionFor(here).getReplies())">
      <!-- コメント表示部分 -->
    </tal:getreplies>

この部分を PloneBatch を使用して、10件単位で表示するように変更します。:

    <tal:getreplies define="results python:portal.sort_modified_ascending(
                                           portal_discussion.getDiscussionFor(here).getReplies());">
      <div tal:condition="results"
           tal:define="Batch python:modules['Products.CMFPlone'].Batch;
                       b_size python:10;
                       b_start python:(len(results) - 1) / b_size * b_size;
                       b_start request/b_start | b_start;
                       batch python:Batch(results, b_size, int(b_start), orphan=1);">
        <div metal:use-macro="here/batch_macros/macros/navigation" />
        <div tal:repeat="reply batch">
          <!-- コメント表示部分 -->
        </div>
      </div>
    </tal:getreplies>

上記のコードでは、b_size に1ページごとのコメントの件数を設定し、python:(len(results) - 1) / b_size * b_size の部分で初期表示時の開始位置を計算しています。

例えば、32件のコメントがついているアイテムの場合、以下のようにコメントが4ページに分かれて表示されるようになります。

1ページ目 2ページ目
Page 1 Page 2
3ページ目 4ページ目(初期表示)
Page 3 Page 4


Powered by vine linux, python, zope, plone, coreblog