技術情報提供ブログ
アーカイブマッピング機能を利用して、一件のエントリーで様々なファイルを生成する
こんにちは、上ノ郷谷(かみのごうや)です。
前回の『Six Apart - 技術情報提供ブログ: Movable Type で StyleCatcher に対応したスタイルライブラリコンテンツを作成する』の『アーカイブテンプレートを利用する』でもご紹介しましたが、Movable Type のアーカイブマッピング機能を利用すれば、各アーカイブに複数のテンプレートを設定することができ、一つのエントリーで同じコンテンツの様々なファイルの生成が簡単にできます。例えば、一件は普通の HTML(.html)ファイルに、もう一件はエントリー本文の内容のみが書かれたテキストファイル(.txt) として構築することや、モバイル向けのページを PC 向けのページと同時に生成する事も可能です。今回はその例含めて、アーカイブマッピングをもう少し詳しく解説してみたいと思います。
アーカイブマッピングの設定はブログ単位で行えます。なお、この記事は Movable Type 3.3x をベースに書いています。
『設定 (詳細モード) > 公開』のページ下部に設定項目が用意されています。各々は以下の図のような設定を行えます。
一件のエントリーで同内容のページを3種作成する
アーカイブテンプレートを追加し、各々を個別エントリーアーカイブに関連づけ、任意のマッピングを設定すれば一件のエントリーの投稿で生成されるページを増やすことができます。例えば、一件は普通の HTML ファイルに、もう一件はエントリー本文の内容のみが書かれたテキストファイル。として構築することも可能です。サンプルを示してみます。
新規テンプレートの作成
個別エントリーアーカイブテンプレートはデフォルトで用意されており、そのテンプレートを利用すれば、デフォルトの個別エントリーアーカイブアーカイブページは生成されます。しかし、エントリー本文の内容のみを表示する.txtファイルを生成するテンプレートは存在しないため、新規作成する必要があります。内容はエントリー本文の内容のみですので、以下のようになります。テンプレートの名前はテンプレートを判別するものですので、任意の名前を設定してください。ここでは『エントリー本文テキスト』とします。
<$MTEntryBody$>
アーカイブマッピングの設定
設定から『公開』タブを選択し、公開設定画面に移動します。アーカイブマッピングの設定は、画面の一番下のセクションで設定可能です。『マッピングを新規作成』をクリックし、以下のように設定します。
つづいてスタイルシートアーカイブテンプレートで生成したファイルの出力フォーマットを設定します。出力フォーマットの変更は、セレクトメニューから『カスタマイズする』を選択し、テキストフィールドに直接記入します。今回は、通常の個別エントリーアーカイブと同じ場所に.txtファイルとして生成するように設定しますので、以下のように出力フォーマットを設定します。ここで利用する、アーカイブ・ファイル名定義の詳細はマニュアルにも記載されておりますので、是非参考にしてください。
%y/%m/%F.txt
この例では、個別エントリーアーカイブを使用しましたが、以上のようにすると、アーカイブごとに複数のテンプレートを設定できることが解ります。
同じアーカイブの種類に複数のアーカイブがあっても、『優先』とチェックされているアーカイブが『固定リンク』で表示されるファイルになりますので、各々のアーカイブのデフォルトな利用法は保持しつつ、様々なファイルの出力ができます。先日ご紹介したSix Apart - 技術情報提供ブログ: Movable Type で StyleCatcher に対応したスタイルライブラリコンテンツを作成するでは、エントリーの追記に入力した CSS ファイルの内容を個別エントリーアーカイブごとに .css ファイルとして生成するように設定しましたし、追加するテンプレートの内容をシンプルにすることで、携帯電話に対応したコンテンツを別に持つ事も可能です。
このように Movable Type ではテンプレートとアーカイブマッピングを利用して、様々なファイルを任意の場所に、生成することができます。今回は一件のエントリーのエントリー本文(<$MTEntryBody$>)を利用して2種類のアーカイブを出力しましたが、マッピングするアーカイブテンプレートの内容を変更すれば、エントリー本文(<$MTEntryBody$>)を利用した PC 用 html ファイル。エントリー追記(<$MTEntryMore$>)を利用した .txt ファイル、抜粋(概要)(<$MTEntryExcerpt$>) の内容を利用した携帯向けコンテンツという風に、一件のエントリーから様々なコンテンツをもつ、様々な形式のファイルを生成することもできます。
- 投稿者 kaminogoya
- カテゴリー Movable Type
トラックバック
トラックバック URL
コメント
おたずねします!
エントリーアーカイブを2種類(PCと携帯用)作成し,インデックステンプレートも2種類(PCと携帯用)作成した場合にはどのように使い分ければいいでしょうか?Preferred ArchiveをPC用のエントリーアーカイブとした場合,優先でない携帯用エントリーアーカイブにリンクさせたい場合何か方法はございますか?
- *
- linyows
- 2006年09月09日 00:55
こんにちは。ご質問ありがとうございます。
今の所、優先ではないアーカイブへのリンクは<$MTEntryPermalink$>で指定できない為、手書きのものになってしまいます。
この場合、たとえば、携帯用のページのURLをアーカイブマッピングの設定でmobile/%fとした場合は
<a href="<$MTBlogURL$>mobile/<$MTEntryBasename$>.html" title="<$MTEntryTitle$>のモバイルページ">モバイル版</a>
という方法でモバイル用ページへのリンクが生成できると思います。
もし、アーカイブ・パスを別に設定されている場合は、<$MTBlogURL$> ではなく、<$MTBlogArchiveURL$> を利用してください。
もしどちらにも対応できるように…。ということであれば、<$MTBlogArchiveURL$> を利用するようにしておくと、良いかもしれません。
MTを使ってデータベースサイトを作っています。
こちらで上ノ郷谷さんが書かれているように、複数のカテゴリアーカイブへマッピングすることにより、PC用と携帯用のページを同時に生成しています。
ただここで、文字コードの問題があります。MTの標準文字コードはUTF8ですが、携帯の古い機種ではShift-JISにしないとページが表示できません。
そのため、現在はページを再構築後にサーバーで文字コード変換ツールを走らせて、携帯用ページだけShift-JISに変換しています。
PC用ページはUTF8、携帯用ページはShift-JISと使い分けることはできないのでしょうか?
(mt-config.cgiでPC用ページもShift-JIS設定にすればいいのですが、そうするといくつかのプラグインが動きません)
もし文字コードの使い分けができないのであれば、今後のMTのバージョンアップでぜひできるように改善をお願いしたいです。


コメント投稿
本エントリーに関係のないご質問はサポートにお願いします。また、Movable Type に関するフィードバックは専用フォームよりお願い致します。