技術情報提供ブログ
テンプレート・タグ(条件タグ) プラグインの開発
シックス・アパートの柳下(やぎした)です。第6回目の今回は、条件分岐をサポートする条件タグの開発についてお話したいと思います。条件タグは、MTIfNonEmptyタグのように、指定した条件について確認し、その結果を真(true)または偽(false)として返すタグです。今回は、前回のテンプレートのリストに対して処理するコンテナ・タグ、MTTemplateと連携する条件タグを開発することとしましょう。
条件タグ: MTTTemplateIfLinkedの開発
インデックス・テンプレートや、アーカイブ・テンプレート、テンプレート・モジュールには、Dreamweaverやホームページビルダーといったオーサリングツールで作成したファイルとリンクし、それぞれのテンプレートのデータとして利用できます。今回は、次のテンプレート・タグを開発します。
- 外部のファイルとリンクしているか否かの確認のための条件タグ: MTTemplateIfLinked
- リンクしているファイル名を出力する変数タグ: MTTemplateLinkedPath
- テンプレートの内容を出力する変数タグ: MTTemplateBody
最初にMTTemplateIfLinkedタグを作ってみましょう。前回作成したMTTemplatesタグでは、特定のブログのテンプレートのデータを格納していました。テンプレートのデータの各要素は、MT::Templateを参照してください。外部のファイルとリンクしているか否かの確認は、次のソースのように、linked_fileデータの有無で確認できます。

条件タグは、MT::Template::Contextのadd_conditional_tagメソッドで登録します。
MT::Template::Context->add_conditional_tag(
TemplateIfLinked => \&template_iflinked);
変数タグ: MTTemplateLinkedPath、MTTemplateBodyの開発
次に、MTTemplateLinkedPath、MTTemplateBodyタグを作ってみましょう。前回作成したMTTemplateNameと同様に作成します。

今回作成したタグを利用し、外部のファイルにリンクしているテンプレートについて、ファイルパスとその内容を表示してみましょう。新規にインデックス・テンプレートを作成し、次のソースの内容を記述します。

作成したインデックス・テンプレートを再構築します。

まとめ
今回は、条件分岐をサポートする条件タグの開発についてご紹介しました。今回のサンプルプラグインは、次のようにダウンロードできます。
次回は、Movable Type 3.3、Movable Type Enterprise 1.02以降のリリースで実装されているTransformerプラグインの開発について解説します。
プラグイン開発ステップ・バイ・ステップ インデックス
- 第1回 プラグイン開発のためのファーストステップ (2006.07.25公開)
- 第2回 テンプレート・タグ(変数タグ) プラグインの開発 (2006.08.04公開)
- 第3回 ローカライズ技術の解説 (2006.08.18公開)
- 第4回 フィルター プラグインの開発 (2006.09.01公開)
- 第5回 テンプレート・タグ(コンテナ・タグ) プラグインの開発 (2006.10.05公開)
- 第6回 テンプレート・タグ(条件タグ) プラグインの開発 (2006.10.05公開)
- 第7回 Transformerプラグインの開発 (2006.10.12公開)
- 投稿者 yagishita
- カテゴリー Plugin
トラックバック
トラックバック URL

