技術情報提供ブログ

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

シックス・アパートの柳下(やぎした)です。Movable Typeのプラグインの開発方法を段階的に解説する「プラグイン開発ステップ・バイ・ステップ」の第2回めは、早速テンプレート・タグ プラグインのひとつである変数タグの作り方をご紹介します。

テンプレート・タグの登録の方法

はじめてのプログラミングをする方にとって、最初の例題といえば、Hello World!の表示ですね。はじめてのプラグインは、文字列を表示する変数タグにしましょう。

次の例は、テンプレート・タグ<$MTWelcome$>がおかれた場所に、Welcome to Movable Type!を表示するプラグインです。Movable Typeをインストールしたアプリケーション・ディレクトリ(例: retcgi-bin/mt)内のpluginsディレクトリの下に、MyPlugin02ディレクトリを作成したのちに、このプラグインを保存(例: welcome.pl)してください。

# Sample Plugin: Template Tag (variable tag)
#

package MT::Plugin::MyPlugin02;

use strict;
use MT;

use MT::Template::Context;

use vars qw($VERSION);
$VERSION = '0.1';

@MT::Plugin::MyPlugin02::ISA = qw(MT::Plugin);

my $plugin = new MT::Plugin::MyPlugin02({
    name => 'Sample Plugin: Welcome',
    version => $VERSION,
    description => 'Sample: Template Tag (variable tag)',
    author_name => 'Plugin author',
    author_link => 'http://www.example.com/about/',
    doc_link => 'http://www.example.com/docs/',
});
MT->add_plugin($plugin);

MT::Template::Context->add_tag(Welcome => \&welcome);

sub welcome {
    return 'Welcome to Movable Type!';
}

1;

プラグインの一覧で、Sample Plugin: Welcome バージョン 0.1と表示すれば、このプラグインが正しく登録されています。

variable-tag-001.gif

また、プラグインについてという項目が増えていると思います。クリックすると、テンプレート・タグが登録できたことを確認できます。

variable-tag-002.gif
use MT::Template::Context;

テンプレート・タグを登録するために、クラス・ライブラリの利用を宣言します。

@MT::Plugin::MyPlugin02::ISA = qw(MT::Plugin);

プラグインのためのクラス・ライブラリの継承を宣言します。

MT::Template::Context->add_tag(Welcome => \&welcome);

テンプレート・タグ MTWelcomeを登録します。登録するタグが処理するサブルーチンを宣言します。

sub welcome {...}

登録したタグが処理する内容を定義します。ここでは、Welcom to Movable Type!を出力しています。

テンプレート・タグを登録する際に、プリフィックスMTはつけません。

実際にテンプレートを編集し、Welcomeプラグインの動作を確認してみましょう。次のようにメインページ(index.html)のヘッダー部分を編集し、再構築します。

<div id="banner">
<div id="banner-inner" class="pkg">
<h1 id="banner-header"><a href="<$MTBlogURL$>" accesskey="1"><$MTBlogName encode_html="1"$></a></h1>
<h2 id="banner-description"><$MTWelcome$></h2>
</div>
</div>

Welcomeプラグインが動作していることを確認できます。

variable-tag-003.gif

環境変数へのアクセスの方法

サブルーチンwelcomeの出力について、環境変数DefaultLanguageの値を参照するようにしてみましょう。

# Sample Plugin: Template Tag (variable tag)
#

package MT::Plugin::MyPlugin02;

use strict;
use MT;

use MT::Template::Context;

use vars qw($VERSION);
$VERSION = '0.1';

@MT::Plugin::MyPlugin02::ISA = qw(MT::Plugin);

my $plugin = new MT::Plugin::MyPlugin02({
    name => 'Sample Plugin: Welcome',
    version => $VERSION,
    description => 'Sample: Template Tag (variable tag)',
    author_name => 'Plugin author',
    author_link => 'http://www.example.com/about/',
    doc_link => 'http://www.example.com/docs/',
});
MT->add_plugin($plugin);

MT::Template::Context->add_tag(Welcome => \&welcome);

sub welcome {
    my $cfg = MT::ConfigMgr->instance;
    MT->set_language($cfg->DefaultLanguage);
    return $plugin->translate('Welcome to Movable Type!');
}

1;

環境変数へのアクセスは、次の手順でおこないます。

  1. MT::ConfigMgrのインスタンスを生成します。

    my $cfg = MT::ConfigMgr->instance;
  2. 生成したインスタンスから、環境変数にアクセスします。たとえば、環境変数DefaultLanguageにアクセスする場合は、次のように記述します。

    $cfg->DefaultLanguage;
  3. 次に、取得した環境変数の値を、set_language関数で登録します。

    MT->set_language($cfg->DefaultLanguage);
  4. 最後にtranslate関数で出力します。translate関数は、出力したい文字列を事前に設定した言語情報で出力する関数です。

    return $plugin->translate('Welcome to Movable Type!');

管理画面の言語に関係なく、環境変数DefaultLanguageの設定にあった出力になることを確認できます。

まとめ

今回は、シンプルな内容の変数タグの作り方を中心に、以下の内容をご紹介しました。

  • 変数タグの登録方法
  • 環境変数へのアクセス方法
  • translate関数

また、次のリンクをクリックしていただくと、今回のサンプルをダウンロードできます。ぜひともご利用ください。次回は、指定した言語で画面に出力するためのローカライゼーション技術について解説します。日本語に対応したプラグインを効率よく開発するための重要な技術の1つです。お楽しみに。

サンプルプラグインのダウンロード

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

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

トラックバック

トラックバック URL

コメント

コメント投稿

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

コメント投稿フォーム:

このページのトップへ