2004年03月10日 (水)

独自 REPLACE を定義するプラグイン

iBlog のテンプレートファイルには <$name$> というような感じで置き換えられる項目(REPLACE)を書けます。このプラグイン MY_REPLACE.plugin は同じような機能を iBlogPatcher に付加します。
<http://homepage.mac.com/yuji_okamura/.Public/iBlog/plugin/MY_REPLACE.plugin>

テンプレートファイルに直接書くのが普通の方法ですが、
  • 複数の blog で同じテンプレートセットを使用するのが困難
    blog の説明やバナーイメージなど blog によって切り替えたいものを書くときには、別なテンプレートセットにしないとならないので、サイトをカスタマイズすればするほど同じテンプレートセットでやっていくことが困難になってしまいます。
  • 複数の blog で別なテンプレートセットを使用するとき面倒
    サイト全体のナビゲーションなど各 blog に共通のものを書くときには、それぞれのテンプレートセットに同じものを書かなければなりません。同じ変更を何回も繰り返してすることになり面倒な上に変更漏れや間違いが起きやすくなります。
  • 複数のテンプレートファイルに共通する部分のメンテが面倒
    一つの blog の中でも、使用しているテンプレートセットの複数のテンプレートファイルで同じ部分をメンテするとき、何度も同じメンテをしなければならないので面倒な上に変更漏れや間違いが起きやすくなります。

と、どっちに転んでも痛し痒しになります。このプラグインを使うとのケースでも一箇所の変更でメンテができるようになります。

# 長い前置きだこと。

プラグインの導入と独自 REPLACE の定義とにわけて説明します。

【プラグインの導入】

このプラグインは Jcode.pm を利用しています。iblogPatcher の重要なプラグインの多くもこれを利用しているので恐らく既にインストールしてあると思いますが、Jcode.pm を利用したプラグインを避けて iblogPatcher を利用している方は観念してください。

  1. MY_REPLACE.plugin をプラグイン置き場にダウンロードする。
    プラグイン置き場はホームから
    Library/Application Support/iblogPatcher/plugin/
    です。
  2. preview after の onStart 処理に MY_REPLACE.plugin の初期化処理を加える。
    次のように %ACTION > preview > after > onStart に加えます。
    'onStart' => {
    	...
    	# 独自 REPLACE を有効にする
    	MY_REPLACE::OnStart(@_);
    	...
    };
以上で MY_REPLACE.plugin が有効になりました。まだ、独自 REPLACE を定義していないので何の効果も発揮しません。次の「独自 REPLACE の定義」に進んでください。

【独自 REPLACE の定義】

---- 全ての blog に共通する REPLACE の定義方法 ----

MY_REPLACE.plugin の中に書いてある設定で定義します。
42 行目の 'replace' => [ から 58 行目の ], の間に書き込みます。そこには # でコメントになって三種類の例が書いてあります。これを真似して新しい REPLACE を定義してください。
三種類の例は 'context' に割り当てる値が違います。それぞれ次のような違いがあります。

'context' => 'html'
HTML の中に埋め込む文字列の場合に使用します。
HTML では &, <, ", > を書くとブラウザが混乱して大変危険です。これをそれぞれ &amp;, &lt;, &quot;, &gt; に置き換えてくれます。
'context' => 'jss'
JavaScript の文字列定数の中に埋め込む文字列の場合に使用します。
JavaScript の文字列定数は ' ' で囲みますが、囲まれた中に直接 ' が入っているとエラーになってしまいます。これを ¥' にエスケープしてくれます。
また改行も使うことができませんが、改行を ¥n にエスケープしてくれます。
'context' => undef
何の操作もせず使用されます。HTML コードや JavaScript コード等が置き換え結果のときに使用します。
この場合は 'context' の指定を省略しても構いません。
例を書いておきます。
{
	'name'	=> '<$SiteName$>',
	'value'	=> '.Mac をよくしよう!',
	'context'	=> 'html',
},
{
	'name'	=> '<$SiteTopURL$>',
	'value'	=> 'http://homepage.mac.com/yuji_okamura/DotMac/',
	'context'	=> undef,
},
この例ではどの blog においても <$SiteName$> がサイト名「.Mac をよくしよう!」に、<$SiteTopURL$> がサイトのトップページの URL「http://homepage.mac.com/yuji_okamura/DotMac/」に置き換わります。

---- blog 固有の REPLACE の定義方法 ----

blog 定義ファイルの preview after の onStart 処理の中に書いた MY_REPLACE::OnStart(@_); よりも前の同処理内に次のように追加します。

# 独自の REPLACE を定義する
push @{$MY_REPLACE::Conf{'replace'}}, (
	ここに 全ての blog に共通する REPLACE の定義方法 と同じように REPLACE を定義してください
);
例えば次のようになります。

この例では <$MetaKeywords$> が meta タグに使うページのキーワード、<$MetaDescriotion$> が meta タグに使うページの説明に置き換わります。

独自 REPLACE を定義してもテンプレートファイルで使わなければ意味がありませんから、もちろんテンプレートファイルも書き換えてください。テンプレートファイルの変更を反映させるために [プレビュー状態をリセット後、プレビュー] や以前に <http://homepage.mac.com/yuji_okamura/iblog/DotMac/Tips/C1592201073/E1917772948/index.html> で紹介した方法で iBlog によるファイルの再生成をしてください。


Posted: 12:30    | Comment | Trackback


以下、類似エントリです。