Nucleus

プラグインからスキン変数<%if%>を制御したいナ

2006年4月2日

ヘルプページより

skintype:現在のスキンタイプがvalue(index, search, item, archive, archivelist, ...)と一致するか調べる(URLでの表記となることに注意 2.5から)

が使えそう。

このスキン変数は『<%if(skintype,archive)%>』の様に使用する。ここで、スキンタイプは以下のうちのどれかのはず。

archive
archivelist
error
imagepopup
index
item
member
search

ここの判定ルーチンは、NUcleus3.22 では SKIN.php のACTIONSクラス内にある。
    case 'skintype':
        $condition = ($name == $this->skintype);
        break;

これは、ver2.5から変わっていない仕様。時期バージョンでも、BaseActions クラスに移るようだけれど、ACTIONS クラス自体が BaseActions クラスから派生しているので、基本的に変わらない。
 で、肝心のACTIONSクラスのインスタンスがどこで作成されているかというと…

SKIN::parse()内(SKIN.php)
$handler =& new ACTIONS($type, $this);
$parser =& new PARSER($actions, $handler);
$handler->setParser($parser);
$handler->setSkin($this);
$parser->parse($contents);

だめだ。ここの $handler は、関数内のローカル変数。PARSER 内でも、この $handler を捕まえる方法が見つからない。べつの方法を考えないと。

コメント

コメントはありません

コメント送信