アーカイブテンプレート作成方法

アーカイブテンプレート作成方法

Posted at October 21,2005 11:58 PM
Tag:[Archive, Daily, Mapping, MovableType, Template]

Movable Type で月別・週別・日別のアーカイブページを作成する場合、デフォルトで使用されるアーカイブテンプレートは「日付アーカイブテンプレート」です。つまり、ひとつのテンプレートで3種類のアーカイブページを賄う設定になっています。

ですが、それぞれのアーカイブページで異なる動作を行いたい場合、例えば、月別アーカイブページでは「×年×月のページ」、日別アーカイブページでは「×月×日のページ」というタイトルを振りたい時、同じテンプレートを使っているとMTタグのみでこのような設定を行うことはできません(多分)。

ここでは、日別・週別アーカイブページに対し、新しく日別アーカイブテンプレート/週別アーカイブテンプレートを作成・対応させるカスタマイズを紹介します。これを行うことでアーカイブページとテンプレートの対応(アーカイブマッピング)は下記のようになります。

現状のアーカイブ・マッピング
アーカイブの種類対応テンプレート
月別アーカイブページ日付アーカイブテンプレート
週別アーカイブページ
日別アーカイブページ
新しいアーカイブ・マッピング
アーカイブの種類対応テンプレート
月別アーカイブページ日付アーカイブテンプレート
週別アーカイブページ週別アーカイブテンプレート
日別アーカイブページ日別アーカイブテンプレート

なお、これ以外の用途で新しくアーカイブテンプレートを作成する場合にも参考になると思います。

1.テンプレートの作成

まず日別用アーカイブの元となる日付アーカイブテンプレートをテキストコピーします。
管理メニューの「テンプレート」→「アーカイブ」→「日付アーカイブ」の順にクリックし、テンプレートの内容をコピーします。

次に管理メニューの「テンプレート」→「アーカイブ」→「テンプレートを新規作成」の順にクリックし、次のページで下記の内容を設定します。

テンプレート名:日別アーカイブ
このテンプレートにリンクするファイル:(空白)
テンプレートの内容:先ほどコピーした内容をペースト

設定が完了したら保存します。週別アーカイブテンプレートも同じ要領で作成し、「テンプレート名」を「週別アーカイブ」とします。

2.アーカイブマッピングの変更

「アーカイブマッピング」とは冒頭の説明の通り、あるアーカイブページとアーカイブテンプレートの対応です。ここではアーカイブページを生成する際、どのテンプレートを使用するかの設定を行います。

アーカイブマッピングの設定管理メニューの「設定」→「公開」→一番下の「アーカイブマッピング」欄に進みます。右側にある「マッピングを新規作成」をクリックすると画像のような設定画面が表示されますので、プルダウンメニューより下記のように選択し、「追加」をクリックします。画像は日別アーカイブのマッピング例です。
日別の場合
アーカイブの種類:日別 テンプレート:日別アーカイブ
週別の場合
アーカイブの種類:週別 テンプレート:週別アーカイブ

アーカイブマッピング状態設定すると、下にある一覧の「日別」欄に「日付アーカイブ」と「日別アーカイブ」、「週別」欄に「日付アーカイブ」と「週別アーカイブ」がそれぞれ表示されます(画像)。
次に、元々ある日付アーカイブとのマッピングは不要のため、「日別」欄の「日付アーカイブ」の右側にあるゴミ箱マークをクリックします。クリックすると「Are you sure you want to delete this template map?」というダイアログが表示されますので「OK」をクリックします。 週別も同様に「週別」欄の「日付アーカイブ」の右側にあるゴミ箱マークをクリックして削除します。

このマッピングが残っていると、例えば日別であれば、日付アーカイブテンプレートを使用したアーカイブページ、日別アーカイブテンプレートを使用したアーカイブページの2種類が生成されてしまいます。再構築時間にも影響しますし、仮に同じファイル名にしていると、後から生成されたものが前のファイルを上書きしてしまいますので削除しましょう。なおアーカイブマッピングの再設定をすれば簡単に復活できます。

不要マッピング削除後の画面ということで、画像のように新しく作ったアーカイブマッピングだけ残っている状態になればOKです。

3.再構築を有効にする

上の画像の一番左にあるチェックボックスは、再構築対象にする・しないを決めるためのものです。上の画像では日別アーカイブは再構築されますが、週別アーカイブは再構築されない状態を示しています。Movable Type のデフォルト状態では日別・週別にはチェックされていないので、再構築が必要なアーカイブにチェックをつけて保存します。
これで全ての設定は完了です。

公開テンプレートをお使い頂いた方からよく「再構築でエラーになります」という質問を頂くのですが、公開テンプレートのメインページ(や他のアーカイブページ)にはカレンダーを表示するようにしており、カレンダーを表示するタグの中に

<a href="<$MTEntryLink archive_type="Daily"$>">

という設定があります。これはカレンダーの日付のリンクで、リンク先として日別アーカイブページを archive_type 属性で設定しています。この設定は日別アーカイブページの再構築を有効な状態にしておかないと再構築時に

テンプレート「xxxページ」の再構築に失敗しました: <MTCalendar>タグでエラーが発生しました: <MTCalendarIfEntries>タグでエラーが発生しました: <MTEntryLink>タグでエラーが発生しました: <$MTEntryLink$>タグを使って、Dailyアーカイブにリンクしようとしましたが、そのアーカイブ・タイプは公開されていません。

というエラーになります。再構築を有効にするための設定がこの「アーカイブマッピング」の日別欄のチェックです。
デフォルトではここがチェックされていないためエラーになる訳です。

4.公開テンプレート修正例

公開テンプレートでは日付アーカイブページに

<div class="sidetitle">
The list of "<$MTArchiveTitle$>"
</div>
 
<div class="side">
<MTEntries>
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><br />
</MTEntries>
</div>

という、該当アーカイブページの一覧を表示するサイドメニューを設置しています。
月別アーカイブでは青色の生成されるタイトル部分が

The list of "2005年10月"

となりますが、日別アーカイブでは

The list of "2005年10月20日"

と、やや長くなります。
日付アーカイブを共用しているとこの部分は変更できないのですが、独立させた日別アーカイブテンプレートのみ、例えば

<div class="sidetitle">
The List of "<$MTArchiveDate format="%b"$>月<$MTArchiveDate format="%d"$>日"
</div>

と変更することで、日別アーカイブページの該当部分を

The list of "10月20日"

という表示に変更することが可能になります。

関連記事
zenback
人気エントリー
トラックバックURL


トラックバック

Movable Type で長年日記 from nlog(n)
Movable Type の日付別アーカイブを長年日記にする。... [続きを読む]

Tracked on April 22, 2006 10:46 PM
コメント

こんにちは。

当方のBlogでは、日別と月別のテンプレートを1つにして、部分的に出力が異なるところはプラグインで処理を分けるようにしています。
後日、そのプラグインを公開したいと思います。

なお、日別と個別のアーカイブページを出力すると、ハードディスクの容量を消費してしまうのがデメリットです。
日別アーカイブページはアクセスされることが少ないので、ダイナミックパブリッシングで出力するなどして、ハードディスクを消費しないようにする方が良いと思います。

[1] Posted by : October 22, 2005 8:20 PM

>壱さん
こんばんは。
処理を分けるというアイデアはありましたが技がありませんでした(笑)。
プラグイン楽しみにしています。

アドバイスも併せてありがとうございます。
たしかにレンタルサーバでは容量は重要な要素ですね。
うちは自宅サーバでディスクがジャブジャブなもので…。

[2] Posted by yujiro : October 22, 2005 10:20 PM

あけましておめでとうございます。
いつもお世話になっています。
今年もよろしくお願いします。
さてさっそくですが,
普段自分はブラウザにIEを使用しているのですが,閲覧して下る方が結構FireFoxをお使いの方が見えるので一度自分もFireFoxで見てみました。
するとアーカイブのページの表示がおかしく,また田のページでも折りたたみのCategoriesだけがおかしいのです。
いろいろさわってみましたが,全くわかりません。
新年早々申し訳ありませんが,ご教示いただければ幸いです。
よろしくお願い申し上げます。

[3] Posted by dotabatapapa : January 1, 2006 6:21 PM

>dotabatapapaさん
こんばんは。
ご質問の件ですが、ページのソースを拝見させていただいたところ中央カラムに冗長なデータがあるように思われます(アーカイブリストの後方にサイドバーに表示すべきデータがあります)。
またCategoriesの折りたたみがおかしい件につきましては、具体的なページをお知らせください(いくつか拝見させて頂いた限りでは正常に表示されていました)。折りたたみマークが表示されないページは、単に折りたたみの設定がされていないだけのようです。

以上です。
それではよろしくお願いいたします。

[4] Posted by yujiro : January 2, 2006 2:38 AM

さっそく教えていただき,有り難うございます。
恐縮です。
お言葉に甘えます。
FireFoxでみると,「Archives」と「Search」のページの表示がおかしくなります。全てのカラムが白くなっていません。
また,FireFoxで表示すると,全てのページで右のカラムにある「Categories」の折りたたみができません。(というより表示されません。)
ご指摘いただいたようにIEでは全く問題ないので困っています。
よろしくお願い申し上げます。

[5] Posted by dotabatapapa : January 3, 2006 5:07 PM

>dotabatapapaさん
こんばんは。
ご質問の件ですが、一つ目は中央カラムで使用されている center タグ(2ペア使われていますが前半のタグ)を一旦削除すれば直ります。多分挿入位置が良くない(きれいに入れ子になっていない)と思われます。
二つ目はカテゴリーリストの折りたたみ指定で

FoldNavigation('Category','on',false);

となっている部分の Category の「C」を「c」と小文字にすれば直ると思います。

以上です。
それではよろしくお願い致します。

[6] Posted by yujiro : January 5, 2006 12:52 AM

お世話になりっぱなしで申し訳ありません。
教えていただいたとおりにするとちゃんと表示できました。
本当に有り難うございました。
今後ともよろしくお願い申し上げます。

[7] Posted by dotabatapapa : January 11, 2006 11:08 PM

>dotabatapapaさん
こんばんは。
ご連絡ありがとうございました。
なおったようで良かったです。
ではでは!

[8] Posted by yujiro : January 11, 2006 11:56 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)