ProcessWireでのページネーション
ProcessWireはページ分割のソースを書き出すのも非常に簡単で、以下の様にすればいいだけである。
$pages->find( )のところはparent_id(親ページのID)がこのページのIDと同一のコンテンツを、日付ソートでという内容で、start、limitはそのままSQLのクエリとなる。
ページネーションの記述
$results = $pages->find("parent_id=$page->id, limit=$limit, start=$start, sort=-date");
$pagination = $results->renderPager();
echo $pagination;
これで以下の様なページ分割のソースが書き出される。
ページネーションのHTML
肝心のコンテンツの表示については以下の様にしておけばよい。
テンプレートの記載
$start = $input->pageNum;
$limit = 3;
if($input->pageNum) $start = $limit * ($start-1);
$poses = $pages->find("parent_id=$page->id, start=$start, limit=$limit, sort=-date");
foreach($poses as $pos) {
echo ""; ";
echo "{$pos->title}";
echo "$pos->body";
echo "
}
echo "
ここで理解が進むまで時間がかかってしまったのが、ProcessWireでのページネーションのサンプルのURLが/page2/のようになっており、デフォルトの?page=2とことなるということ。
サンプルではページナンバーを$input->pageNumで読み込むことになっているが、なぜか$input->pageNumに1しか入らないので、はじめは$input->get->pageとしてURLのデータを取り込んで処理していた。(ProcessWireでは$input->get->nameの様にすればGET、POSTいずれも取り込むことが出来る。)
ProcessWireでのページネーションのサンプルのURLのように/page2/とするには、利用するテンプレートのURLSのところを開きAllow Page Numbers?にチェックを入れるとURL記述が変更され、同時にサンプルと同様にページナンバーを$input->pageNumで読み込むことができるようになる。このチェックを入れないと$input->pageNumは常に1のままとなるので注意が必要。
processwireはmodxと同じく階層型のCMSとなるが、あらゆるところでmodxに比べて素直で感覚的、視覚的に扱いやすい。evoだかrevoだかもうわけわかんねーなと思った人にはprocesswireは素直にお勧めする。またこれまでのCMSであるwordpressやnucleusなどのように、カテゴリーというコンテンツの体系的な縛りがないので、欲しいデータを欲しい所で簡潔な記述で読み込めるのがよい。
NEXT : ワールドWaveトゥナイトの鎌倉千秋と黒木奈々の立ち位置が微妙