- 2007-02-01 (木) 23:56
- MovableType


- 子カテゴリのエントリーを含むアーカイブ
スタティック・パブリッシング時に、親カテゴリ・アーカイブ内に子カテゴリのエントリーを含むようにした場合、通常子カテゴリへエントリーを投稿しても、親カテゴリの再構築は行われません。
MT3.2まではParentCategoryRebuildというプラグインで、これが解決できていたのですが、MT3.3になってこのプラグインが動作しなくなりました。
今回ダイナミックパブリッシングに切り替えた事で、そもそも再構築という概念が無くなり、プラグイン抜きで同様の事が出来るようになりました。
実際には親カテゴリのアーカイブに、子カテゴリのエントリも含まれるよう、MTEntriesタグ部分をMTEntriesWithSubCategoriesと置き換えてみました。最初はうまく動かなかったんですが、categoryアトリビュートにカテゴリー名を指定する事で、そのカテゴリー以下のエントリーを表示することが出来るようになりました。
しかし、これには若干の見落としがありました。
そもそもカテゴリーは、標準では分割されずに巨大なアーカイブになりがちです。このサイトの「MovableType」カテは現在164エントリー、その親カテの「Web」はなんと231にもなります。
それで、通常はアーカイブを分割する訳ですね。ただしダイナミックパブリッシングには通常のPerl用プラグインは使えません。じゃぁ分割できないかというと、ちゃんと救いの神はいるんです。
「WingMemo: ダイナミック・パブリッシングで頁分割(4) バリエーション編」
つまり、ダイナミックパブリッシングは、そもそもSmartyテンプレートを使っているので、こういうのには向いてるんだよって話みたい。で、早速参考にしてページ分割。
ところがですねぇ、確かにページ分割はうまくいったんですが、親カテゴリーを表示したらなぜか分割表示部分が出てこないんです。最初のページのみ。子カテゴリーは問題ないのにナゼ?・・・
気になってテンプレート眺めてたら、はたと気づきました。
そうか、ページ分割はカテゴリー内のエントリー数を元に、行われるんだ。親カテゴリー自身のエントリーは実際には1、2エントリー程度なので、ページ分割の対象にならなかったんです。子カテゴリーまで含んだエントリー数を渡すはずが、親カテゴリーのエントリーしか渡してなかった。
つまり、ページ分割されないのではなく、ナビゲーションが表示されなかったわけですね。
さぁ、そこで困りました。今までサブカテゴリーまで含んだエントリー数って、プラグインで済ませてたんです。Smartyでこういうコードどう書くんだろう?
今は結局ここで、煮詰まってます。<MTHasSubCategories><MTSubCategories>~
</MTSubCategories></MTHasSubCategories>で合計して渡せば良さそうな気はするのですが・・・
どなたか、なんか良い方法教えてください。
- Newer >: links for 2007-02-01
- < Older: ダイナミックパブリッシングへの道(3):RewriteRule
ping a Trackback
- TrackBack URL for this entry.(1)
Comments:(2)
-
said
February 2, 2007 5:56 PM
|
ReplyThis!
こんにちは。いろいろ修正お疲れ様でした。
コメントをいただいた時はよく分からなかったのですが、こういうことだったのですね。テンプレートタグとエントリータグを勘違いしていたみたいです。で、<$MTCategoryCount$>を<$MTSubCatCount$>に変えたいのなら、できると思います。以下の頁が参考になると思います。
http://taeko.w-museum.com/wing/200608081156.htmlこの例では静的生成させた<$MTArchiveCount$>を各アーカイブに読み込んでいますが、同様にカテゴリーテンプレートを新たに作り、<$MTSubCatCount$>とだけ記入して数字だけのファイルを作り、アーカイブマッピングでアドレスを定めて分割コードの<$MTCategoryCount$>が来るべきところを<$MTInclude>に置き換えて読み込むわけです。
例では{{fetch file="・・を使ってますが、<$MTInclude>でもいけます。アーカイブ頁ではプラグインを使って静的生成させた「投稿のあった月の総数」を<$MTInclude>で読み込んで半年単位で頁送りしてますので。時間ができたら私も実験してみようと思います。
外していたらすみません。-
-
replied for
TAEKO's comment
February 2, 2007 7:41 PM
|
ReplyThis!
こんにちは、TAEKOさん。
そうか、最初は意味解らなかったんですが、じっくり眺めてなんとなく解ったかもしれません。
別なファイルの中身をテンプレート内に展開して、それをキャプチャするって事なのですね。
なるほど。どうもありがとうございます。週末に試してみます。
-




スクリプトの読み込みが完了していません。
メールフォーム(Javascriptを使用していません)や、
Twitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。