- 2007-02-17 (土) 21:51
- MovableType


- 季節ごとのアーカイブ
mixiのMTコミュで、月別アーカイブの部分を季節別アーカイブへと変えたいという質問がありました。
これは、その要望をプラグインを使い実現する手順です。
このカスタマイズはPerl版プラグインを多用します。その為ダイナミック・パブリッシングでは動作しません。
アイデア的には年別アーカイブの作り方が何か所かで公開されてますので、それを元に作ります。
先日 Movable Type 3.2 の Archive File Path 形式のフォーマットと実際の出力フォーマットの早見表にて、デフォルトでの URI 設計について触れました。 エントリアーカイブの場合は yyyy/mm/entry_basename.html 、日別アーカイブの場合は yyyy/mm/dd/index.html 、月別アーカイブの場合は yyyy/mm/index.html のようになっています。 しかし、 yyyy/index.html のようなフォーマットで生成される年別アーカイブはありません。
MovableType(ムーバブルタイプ)のアーカイブには個別エントリ、日別、週別と月別アーカイブがありますが、年別アーカイブなんてものはありません。 年単位のページなんて作っても、あまり意味がないからなんでしょうね。そんな年別アーカイブですが、わたしは設置してみました。自己満足のために作ったといってもいいかも、です。
上記サイトを参考に、年別アーカイブを作成できたら、後はその中で特定の月のエントリーのみ表示すれば、季節別アーカイブを作成できます。
いくつか候補があって検討したのですが、今回は DateTags というプラグインを使います。
このプラグインはアーカイブを解凍すると2つのプラグインが入っています。
DateTags と MoreDateTags です。MoreDateTags は月の満ち欠け・アメリカの休日・アストロサイン・誕生石を表示するものなので、今回はインストール必要はないし、たぶんこれからも使うことはなさそうです。
このプラグインでは「Date::Calc」というPerlモジュールが必要になります。ただし、その機能を使わないタグならば使えそうなことも書いてあるので、モジュールを入れなくても平気かもしれないですが。
特定の月のみ処理するタグは2種類存在します。
MTIfMonths と MTDateRange です。MTIfDateWithin も、もしかしたら使用できたかもしれません。
MTIfMonths は <MTIfMonths months="1,2,3">~</MTIfMonths> とする事で、指定月の時のみ内部を実行するコンテナタグです。今回はこれを使っています。
ちなみに MTDateRange は start と end そして start_adjust か end_adjust を使い、ある日から別な日まで処理する・もしくはある日からN日後まで処理するタグで、これは別な使い方が出来そうな気がします。似たようなタグで MTDateLoop というのも使えるみたいです。
年別アーカイブのテンプレートに MTIfMonths を追加すれば、季節別のテンプレートの完成です。
MTEntriesで囲まれた部分を以下のように変えます。
<MTArchiveYear order="descend"><MTArchiveYearIfEntries><MTArchiveLoad><MTDateHeader><MTEntries sort_by="created_on" sort_order="ascend"><MTIfMonths months="1,2,3"> ~</MTIfMonths></MTEntries></MTDateHeader></MTArchiveLoad></MTArchiveYearIfEntries></MTArchiveYear>
緑部分は、年別アーカイブで使用しているコードです。季節別にする為に追加するのは青文字部分のみです。
次は作成したテンプレートをアーカイブにマップします。
設定>公開で、月別アーカイブを4つ追加作成し、それぞれに作ったテンプレートを割り当てます。
テンプレートの出力フォーマットの部分は例としてアーカイブ以下に年のフォルダを作成し、季節名(winterなど)のファイル名で作成する事としました。ご自分の気に入るように変更してください。
冬用を例に出すと
<$MTArchiveDate format="%Y"$>/winter<$MTBlogFileExtension$>
となります。
最初は季節名の部分もプラグインを使って処理するつもりだったのですが、ちょうど良いプラグインも無く複雑になりそうなので、シンプルに4つのアーカイブを作成するようにしました。
これで、再構築すれば季節ごとのアーカイブが出来上がります。
- Newer >: なんとなくApache2.2
- < Older: ダイナミック・パブリッシングでリアルタイム再構築を使用する
ping a Trackback
- TrackBack URL for this entry.(1)
Comments:(2)
-
said
February 18, 2007 12:53 AM
|
ReplyThis!
これは素敵なカスタマイズですね。
日記テーマブログとか、旅ブログとか、そういった時にも利用出来ますよね。
素晴らしいですね。-
-
replied for
arata's comment
February 18, 2007 10:20 AM
|
ReplyThis!
こんにちは。
>日記テーマブログとか、旅ブログとか、
質問者がどういうのをイメージしているかは、伝わったんですが、通常のサイトじゃあんまり使わないパターンですよね。今回ナビゲーション関連のカスタマイズ載ってないのも、そこら辺が関係してます。
もしかして、2007Winterの前は2006Winterに繋がるのかな?とか思えるんですよね。まぁ、実際ダイナミック・パブリッシング対応じゃないんで、ここじゃ関係ない話なんですが。
-




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