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

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

子カテゴリのエントリーを含むアーカイブ」で中途半端だった、ダイナミックパブリッシングで子カテゴリーを含むアーカイブにページ送りを付ける方法ですが、「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」の当該エントリーを参考に行ってください。

Trackback:(1)

TrackBack URL for this entry.(1)
Listed below are links to weblogs that reference
子カテゴリのエントリーを含むアーカイブ(ダイナミックパブリッシング暫定版) from WolaWola
WingMemo thumbs 「ダイナミック・パブリッシングで頁分割(5) 親カテゴリー編」 from WingMemo 2007-02-05 (月) 22:36:03

オラオラのoscarさんから「親カテゴリーに子カテゴリーのエントリーも表示させ、かつ頁分割も行いたい」との質問を受け、parlプラグインを使う部分を静的生...
[詳しくはトラックバック元サイトで]

Comments:(2)

TAEKO`s user-pic TAEKO said February 5, 2007 10:55 PM | ReplyThis!

こんにちは。
私もあれから試行錯誤を続けていたのですが、ダイナミックで動的に「子カテゴリーを含む記事数」を出力するのに成功したので記事にしてみました。
よろしければご覧下さい。
http://taeko.w-museum.com/wing/200702052158.html

oscar`s user-pic oscar replied for TAEKO's comment February 5, 2007 11:41 PM | ReplyThis!

むむむ?
タグの動きが頭に入ってこない。ちょっと、じっくり考えます。
これで、完全にダイナミックのみで動作する、ページ分割の完成っていう訳ですね。
どうも、ありがとうございました。

スクリプトの読み込みが完了していません。

メールフォーム(Javascriptを使用していません)や、twitter.pngTwitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。

Comment Form

QuickTagsHere

EmoticonHere

(入力しない場合「Anonymous」で代替されます)
(公開はされませんが、Gravatarアイコンの取得や、Comment Subscribeの送信先アドレスとして使われます)
(入力すると、コメント表示でユーザー名にリンクが貼られます)
(この情報は、JavascriptによりCookieに保存されます。)

NotifyMail Powered by Comment Subscribe

はてブコメント:

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

MT5Techniques

MT5Techniques

2冊目の共著「Movable Type 5 実践テクニック」(シックスアパート監修)が出版されました。(ソフトバンク クリエイティブ刊)

AjaxSearch
(5)
(6)

別ページに遷移します。

Powered by 暴想&Dakiny/DigiClo

Tag Cloud

Style References

OpenID accepted here

Accepted OpenID
OpenID認証に対応しています

OpenIDについて

Feeds
Link Status
Read Together
  • LOADING...

ブログ/RSS/キーワードAPI - sidetools

In One

なかのひと

位置情報ブログパーツ「なかのひと」

Links
Powered By

Return to page top