■
エントリーの投稿画面に、「キーワード」という欄がありますが、ここを使ってWindowsのiniファイルのように、特定のキーに対する値を取得するようなプラグインを考えて見ます。
「remarkedfield」というグローバルフィルタを作ってみました。
package MT::Plugin::RemarkedField; use strict; use MT; use MT::Template::Context; use MT::Plugin; # show plugin information to main menu my $plugin = MT::Plugin->new; $plugin->name('Remarked Field 0.01'); $plugin->description('Get value from Remarked Field like \'<!--FIELD="VALUE"-->\' from string.'); MT->add_plugin($plugin); # add global filter MT::Template::Context->add_global_filter(remarkedfield => \&remarkedfield); # main sub remarkedfield { my ($text, $arg, $ctx) = @_; my $pattern = $arg." *= *\"(.*?)\""; my $out = ''; if($text =~ /$pattern/s) { $out = $1; } $out; } 1;
これを「remarkedfield.pl」などの名前で保存し、pluginsに入れます。
キーワードの欄に
icon="xx.jpg" identify="ABC"
と入れておくと、
テンプレート側で
<img src="<$MTEntryKeywords remarkedfield="icon"$>" alt="<$MTEntryKeywords remarkedfield="identify"$>" />
と記述した場合、
<img src="xx.jpg" alt="ABC" />
と展開されます。
実は、「Remarked」と名が付くとおり、コメント(<!-- -->)内に限定しようと思ったのですが、融通が利かない上に、タイプ量が多くなるのでやめました。
MTEntryKeywords以外でも使えますが、本文や追記に入れるのは、ちょっとどうでしょうか。やはりMTEntryKeywordsで使うのが、一番スッキリするように思います。
需要があるかどうかは別として、ご利用になった場合に不具合が生じても、責任は負えません。自己責任でお願いいたします。