本文へジャンプ

PowerCMSでページ分割!

Posted by RSK

PowerCMS

こんにちは、スズキです。

今回は、Webサイト構築のプロジェクトで使用している「PowerCMS」を使ったページ分割の方法を解説してみたいと思います。

ちなみにPowerCMSとは、Movable Typeを高機能CMSにするプラグインセットです。
様々な機能がありますが、その中の一つとしてページ分割プラグイン「Pager」も標準で用意されています。

アーカイブテンプレートにて分割機能をONにする

アーカイブテンプレートにて分割機能をONにする

ページ分割をしたいアーカイブテンプレートの編集画面の「このアーカイブを分割する」にチェックを入れます。

<mt:Entries>を分割する

<mt:Entries>タグにlimitとoffsetモディファイアを指定します。
「limit」には1ページ内に表示したい数を、「offset」には0を指定してください。
※<mt:Entries>タグに付けた絞り込み系のモディファイアは無視されます。

  1. <mt:Entries limit="10" offset="0">
  2. <$mt:Include module="エントリーユニット"$>
  3. </mt:Entries>

ページナビゲーションを作る

プラグインのオリジナルタグである<mt:Pager>を使って、ページナビゲーションを作ります。

  1. <mt:Pager>
  2.  
  3. <mt:IfPagerHeader>
  4. <div class="pagingNav">
  5. <ul>
  6. <mt:IfPagerPrev><li class="prev"><a href="<$mt:PagerPrevLink$>">前のページへ</a></li></mt:IfPagerPrev>
  7. </mt:IfPagerHeader>
  8.  
  9. <$mt:PagerCurrent setvar="CurrentNum"$>
  10. <$mt:PagerCounter setvar="CountNum"$>
  11. <mt:If name="CurrentNum" eq="$CountNum">
  12. <li><span class="current"><$mt:Var name="CountNum"$></span></li>
  13. <mt:Else><li><a href="<$mt:PagerLink$>"><$mt:Var name="CountNum"$></a></li></mt:Else>
  14. </mt:If>
  15.  
  16. <mt:IfPagerFooter>
  17. <mt:IfPagerNext><li class="next"><a href="<$mt:PagerNextLink$>">次のページへ</a></li></mt:IfPagerNext>
  18. </ul>
  19. <!-- //.pagingNav --></div>
  20. </mt:IfPagerFooter>
  21.  
  22. </mt:Pager>

テンプレートにある一番最初の<mt:Entries>を対象として処理します。
<mt:Entries>タグや、<mt:Pager>タグがインクルード先に記述されていると正常に動きません。
ページナビゲーションを共通化したいのですが、ココはぜひ改善して欲しいですね...。

現在のページを判別してスタイルを変えたい

今表示中のページを判別するタグが用意されていないので、自作します。
<$mt:PagerCurrent$>で現在のページ数、<$mt:PagerCounter$>でページ分割総数を、それぞれ変数に格納して比較します。

  1. <$mt:PagerCurrent setvar="CurrentNum"$>
  2. <$mt:PagerCounter setvar="CountNum"$>
  3. <mt:If name="CurrentNum" eq="$CountNum">
  4. <li><span class="current"><$mt:Var name="CountNum"$></span></li>
  5. <mt:Else><li><a href="<$mt:PagerLink$>"><$mt:Var name="CountNum"$></a></li></mt:Else>
  6. </mt:If>

それでは、ステキなMTライフを。

Recent Entries
MD EVENT REPORT
What's Hot?