NP_SkinVarManager
プラグインで提供できるスキン変数は、プラグイン名から『 NP_ 』を取り除いたもの一つだけしか使えませんが、これは一つのプラグインでさまざまなスキン変数を供給できるようにするためのものです。また、<%blog%>などのコア提供のスキン変数も、プラグインでオーバライドすることができます。
インストール方法
NP_SkinVarManager.php という名のファイルを作成し、エディタを用いて
プラグインのソースコード をコピー&ペーストする(このとき、最初の <?php の前に、余分な改行が入らないように注意)。
nucleus/plugins/ ディレクトリに、作成されたファイルをアップロードする
管理画面からプラグインをインストールする
このプラグインの使い方
このプラグインは、RegisterSkinVarsというイベントを発生させます。
イベント中で、$data['skinvars'][スキン変数名]=(割り当てる関数名)のように記述してください。
割り当てる関数は、グローバル関数なら関数名を文字列型で、オブジェクトメソッドなら配列型でarray(&$this,'xxxx')のように指定します。
呼び出される関数の第一引数には $skinType が、第二引数以降にスキン変数呼び出し時の引数がセットされます(doSkinVarと同じ)。
イベント中で、$data['ifvars'][スキン変数名]=(割り当てる関数名)のように記述すれば、<%if%>の機能をオーバライドすることができます。
<%text(xxxx)%>として、言語ファイルで設定されている定数値を表示するようにする例。
function getEventList() { return array('RegisterSkinVars'); }
function event_RegisterSkinVars(&$data) {
$data['skinvars']['text']=array(&$this,'parse_text');
}
function parse_text($skinType,$text){
if (defined($text)) echo constant($text);
else echo htmlspecialchars($text,ENT_QUOTES,_CHARSET);
}
注:プラグインコードの一部だけ取り出しています。
<%if(admin)%>の機能をオーバライドし、super-adminかどうかを調べるようにする例。
function getEventList() { return array('RegisterSkinVars'); }
function event_RegisterSkinVars(&$data) {
$data['ifvars']['admin']=array(&$this,'ifAdmin');
}
function ifAdmin(){
global $member;
return $member->isAdmin();
}
注:プラグインコードの一部だけ取り出しています。
スキンへの記述
テンプレートへの記述
オプション
Tipsと裏技
$obj=$manager→getPlugin('NP_SkinVarManager'); として、このプラグインのオブジェクトを取得すると、$obj→parse()メソッドでスキンをパースすることが可能です。他のプラグイン中で、スキン変数をオーバライドするようにスキンをパースする際、このメソッドを利用してください。
同様に、$obj→parse_parsedinclude()メソッドも使えます。ファイル名は2番目の引数に指定してください。一番目の引数は、スキンタイプ(index, itemなど)の指定です。
PreParseContentsイベントを利用して、パースする直前のコンテンツの内容を取得したり編集したりすることができます。
希望事項
バグ
開発履歴
Version 0.1.4 リリース (2009-3-11)
Version 0.1.1 リリース (2008-12-28)
Version 0.1.0 リリース (2008-12-27)