BLOG > GENERAL

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などのように、カテゴリーというコンテンツの体系的な縛りがないので、欲しいデータを欲しい所で簡潔な記述で読み込めるのがよい。



LINEで送る
PREV : キズパワーパッドやクイックパッドの使用上の注意
NEXT : ワールドWaveトゥナイトの鎌倉千秋と黒木奈々の立ち位置が微妙

富士箱根測量オフィシャルブログが面白い


神奈川県の箱根にある富士箱根測量という測量会社さんのブログなんだけれども面白いのだ。 測量?というとなんか二人一組になって道路のこっちと向こうに立ち、ひとりがうつむき加減で棒を立ててじーっとし、それ...つづきはこちら