Home > MovableType > 子カテゴリのエントリーを含むアーカイブ(ダイナミックパブリッシング暫定版)

子カテゴリのエントリーを含むアーカイブ(ダイナミックパブリッシング暫定版)

  • February 5, 2007 12:00 PM
  • MovableType
  • MovableType, ParentCategoryRebuild

子カテゴリのエントリーを含むアーカイブ」で中途半端だった、ダイナミックパブリッシングで子カテゴリーを含むアーカイブにページ送りを付ける方法ですが、「WingMemo」TAEKOさんの助言により可能になりました。
ただし、これはスタティック・追加カテゴリーテンプレート+スタティックプラグインという、あまりスマートとは言えない解決方法なので、出来ればこれからも方法の模索は続けたいと思います。
ただこれはこれで、なかなか面白い解決方法なのは確かで、ダイナミックパブリッシング時のテンプレートがどのように展開されていくかが理解できる事と思います。

子カテゴリーを含むエントリー数をSmarty変数にセット

どのようにしたかの説明です。 スタティックのプラグイン「Everitz Consulting: MT-SubCatCount」を使えば、エントリー数を得られるのですが、このプラグインはダイナミック・パブリッシングのテンプレート内では使えません。 今回はこのプラグインの出力を、工夫してダイナミックのテンプレートに読み込みます。 まずカテゴリーアーカイブ用のテンプレートを作成します。 テンプレートの中身は <$MTSubCatCount$> のみになります。タグの前後に余分なスペースや改行を入れないで下さい。余分なコードの混入は、予想もしない動作をさせる可能性があります。 このテンプレートはダイナミックにしてはいけません。 ブログの公開設定でこのテンプレートをカテゴリーアーカイブとして割り当てます。 読み込み時にファイル名が一意になるように設定してください。私はカテゴリーIDを使いましたが、人によっては BaseName などでも良いでしょう。私は catcnt<$MTCategoryID$>.txt というファイル名にしました。後はカテゴリーの再構築を行えば、エントリー数の書かれたテキストファイルが出来上がります。 実際にこれをカテゴリーテンプレートで読み込むのは、色んな方法がありますが、Smarty変数にセットする場合には
{{capture name="mtcntname"}}<$MTBlogURL$>archives/catcnt<$MTCategoryID$>.txt{{/capture}}
このようにする事で、mtcntnameにセットできます。

カテゴリーアーカイブのページ分割

ページ分割に関しては、「WingMemo: ダイナミック・パブリッシングで頁分割(4) バリエーション編」に詳しく書かれていますので、子カテゴリーを含むエントリー数でページ分割する部分だけ書きます。 上記サイトの説明でカテゴリー内のエントリー数をキャプチャする部分。
{{capture assign="count"}}<$MTBlogEntryCount$>{{/capture}}
この部分を以下のように書き換えます。
{{capture name="mtcntname"}}<$MTBlogURL$>archives/catcnt<$MTCategoryID$>.txt{{/capture}}
{{capture assign="count"}}{{fetch file="`$smarty.capture.mtcntname`"}}{{/capture}}
これで、カテゴリー分割が正しいエントリー数で行われます。

<MTEntriesWithSubCategories> を使った、子カテゴリーまで含むえんとりーの表示は、ちょうど、TAEKOさんが「WingMemo: 親カテゴリーに子カテゴリーの記事を表示させる」を書いて下さったようです。そちらをご覧下さい。ちなみに、私も最初categoryアトリビュートを指定しなくてはいけないというのが解って、試行錯誤した口です。

Smartyコード書いたら、インクルード時に評価されてしまった。気をつけねば。

テンプレート例を載せます。
<MTEntries>と</MTEntries>部分周辺を以下のように置き換えて下さい。
{{capture assign="thiscategory"}}<$MTCategoryLabel$>{{/capture}}
{{assign var="epp" value=5}}
<MTEntriesWithSubCategories lastn="$epp" offset="`$smarty.request.offset`" category="$thiscategory">

中略

</MTEntriesWithSubCategories>
{{capture name="mtcntname"}}<$MTBlogURL$>archives/catcnt<$MTCategoryID$>.txt{{/capture}}
{{capture assign="count"}}{{fetch file="`$smarty.capture.mtcntname`"}}{{/capture}}
{{if $count > $epp}}
{{if $smarty.request.offset > 0}}
<a href="?offset=0">&laquo;</a>
<a href="?offset={{$smarty.request.offset-$epp}}">&lt; 前の{{$epp}}件</a>
{{else}}
&laquo; &lt; 前の{{$epp}}件
{{/if}}
|
{{if $smarty.request.offset < $count-$epp}}
<a href="?offset={{$smarty.request.offset+$epp}}">次の{{$epp}}件 &gt;</a>
<a href="?offset={{math equation="floor((x-1)/y)*y" x=$count y=$epp}}">&raquo;</a>
{{else}}
次の{{$epp}}件 &gt; &raquo;
{{/if}}
{{/if}}

見た目をカスタマイズしたい場合は、「WingMemo」の当該エントリーを参考に行ってください。

Comments:2

loading

Comment Form

LargerSmaller

Powered by Ajax Comments & Comment Subscribe

Trackbacks:1

TrackBack URL for this entry
Listed below are links to weblogs that reference
子カテゴリのエントリーを含むアーカイブ(ダイナミックパブリッシング暫定版) from WolaWola
「ダイナミック・パブリッシングで頁分割(5) 親カテゴリー編」 from WingMemo 2007-02-05 (Mon) 22:36
WingMemo thumbsオラオラのoscarさんから「親カテゴリーに子カテゴリーのエントリーも表示させ、かつ頁分割も行いたい」との質問を受け、parlプラグインを使う部分を静的生...

[詳しくはトラックバック元サイトで]


Home > MovableType > 子カテゴリのエントリーを含むアーカイブ(ダイナミックパブリッシング暫定版)

Tag Cloud
Search

powered by Fast Search 2.1

ThisBlog Feeds
Link Status
  • はてブ数
  • Scouter WolaWola
Links
WolaWolaとあわせて読みたい
Powered By

Return to page top