技術情報提供ブログ

テンプレート・タグ(条件タグ) プラグインの開発

シックス・アパートの柳下(やぎした)です。第6回目の今回は、条件分岐をサポートする条件タグの開発についてお話したいと思います。条件タグは、MTIfNonEmptyタグのように、指定した条件について確認し、その結果を真(true)または偽(false)として返すタグです。今回は、前回のテンプレートのリストに対して処理するコンテナ・タグ、MTTemplateと連携する条件タグを開発することとしましょう。

条件タグ: MTTTemplateIfLinkedの開発

インデックス・テンプレートや、アーカイブ・テンプレート、テンプレート・モジュールには、Dreamweaverやホームページビルダーといったオーサリングツールで作成したファイルとリンクし、それぞれのテンプレートのデータとして利用できます。今回は、次のテンプレート・タグを開発します。

  • 外部のファイルとリンクしているか否かの確認のための条件タグ: MTTemplateIfLinked
  • リンクしているファイル名を出力する変数タグ: MTTemplateLinkedPath
  • テンプレートの内容を出力する変数タグ: MTTemplateBody

最初にMTTemplateIfLinkedタグを作ってみましょう。前回作成したMTTemplatesタグでは、特定のブログのテンプレートのデータを格納していました。テンプレートのデータの各要素は、MT::Templateを参照してください。外部のファイルとリンクしているか否かの確認は、次のソースのように、linked_fileデータの有無で確認できます。

画像(1)

条件タグは、MT::Template::Contextadd_conditional_tagメソッドで登録します。

MT::Template::Context->add_conditional_tag(
    TemplateIfLinked => \&template_iflinked);

変数タグ: MTTemplateLinkedPath、MTTemplateBodyの開発

次に、MTTemplateLinkedPath、MTTemplateBodyタグを作ってみましょう。前回作成したMTTemplateNameと同様に作成します。

画像(2)

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

画像(3)

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

画像(4)

まとめ

今回は、条件分岐をサポートする条件タグの開発についてご紹介しました。今回のサンプルプラグインは、次のようにダウンロードできます。

次回は、Movable Type 3.3、Movable Type Enterprise 1.02以降のリリースで実装されているTransformerプラグインの開発について解説します。

プラグイン開発ステップ・バイ・ステップ インデックス

  • 投稿者 yagishita
  • カテゴリー Plugin

トラックバック

トラックバック URL

このページのトップへ