Nucleus:スキン/テンプレート変数「phpinclude」でblog内の各値を参照する方法
Nucleus (35 items)
2005年03月04日
プラグインを作成する事が一般的です。
もちろんそれでいいんですが、それとは別に、
スキン/テンプレート変数「phpinclude」を使用する方法もあります。
プラグイン作成の場合は、
そのフォーマット(クラスで作りdoSkinVar等のメソッドを記述)が決められていますが、
「phpinclude」の場合は、まんまPHPのコードを自由に書くことが出来ます。
つまり、プラグイン用にコードを書き換えることなく、そのまま使えます。
スキン/テンプレート変数:phpinclude
PHPファイルをアウトプット時にインクルードする。ファイルの中身はPHPとして解釈されるので注意すること。Nucleusのスキン/テンプレート変数は展開されない。(他のインクルードオプションとして、parsedincludeとincludeをみること)
ファイルはスタンダードなphpのコマンドinclude()を使ってインクルードされます。このコマンドは内部のクラス・メソッドから呼び出されるので、自身でアクセスしたいグローバル変数を宣言する必要があります。多くの標準的な変数はNucleusによって自動的にグローバルが宣言されます。
・・ふむふむ。
まあ、こういうものなのですが、
どういう時にこれ使うねん?といった判断は難しいところです。
結局、プラグインでいいんですがね。。
ただ、全く別のところで作成したphpファイルを、
各ページが表示されたタイミングで行いたいとか、
Nucleusとは別の世界で作ったphpを実行したい場合なんかに適用されるでしょう。
例えば、単純なアクセスログを記録するphpファイルがあったとして、
それをNucleusで作成したサイトにも使いたい場合は、
この「phpinclude」で、そのphpを呼び出せばいいのです。
で、これはこれでいいんですが、せっかくNucleusから呼び出すんだから、
Nucleus上の値(blog名とかカテゴリー名、各記事タイトル等)を、
このphpincludeしたphpでは使えないの?といった疑問も出てくると思います。
これについても、ヘルプから抜粋してみます。
スキン/テンプレート変数:phpinclude:vars
次のグローバル変数は、スキン/テンプレート変数のphpincludeによってインクルードされたファイルからアクセスできるものです:
$GATEWAY_INTERFACE, $SERVER_NAME, $SERVER_SOFTWARE
$SERVER_PROTOCOL, $REQUEST_METHOD, $QUERY_STRING
$DOCUMENT_ROOT, $HTTP_ACCEPT・・・・・
上で書いてるのは、phpincludeで呼び出したphp内では、
”$_SERVER['REMOTE_HOST']”とかもろもろのSERVER変数などを
参照できますよという事です。(何も書かなくても)
でもこれだけだと、Nucleus上の各値は参照できるかわかりません。
重要なのは下記一文。。
他の変数に関しては、'global $varname;'をきっちりとコードに加える必要があります。
・・これだけかよっ!
しかし、この事=プラグインで作成する場合と同様に各値を参照できる、
という事になるのです。。
実際の各値の参照の仕方ですが、これはヘルプにも書いてません。。
ではどうするのか??
・・Nucleusはオープンソースです。
ソースから、その方法を拾い出すしかありません。。。
(この辺がプラグイン作成する時も辛いところです)
しかし、phpのソースはかなり多いですよね。
ここでポイントですが、実際参考になるのが、
Nucleusのlibsフォルダ内の「globalfunctions.php」です。
ここに記述されているコードを何となく書くと、
以外にすんなり、プラグインやphpincludeのphp上で各値を参照できます。
※まず「globalfunctions.php」で、”global”で検索し、更にヒットした変数を検索していくと見えてきます。。
では下記に一例を。
//グローバル変数
global $blog, $itemid, $manager, $catid;
//blog名取得
$str = $blog->getName();
//カテゴリー名取得
$str = $blog->getCategoryName($catid);
//各記事タイトル取得
$item = $manager->getItem($itemid,0,0);
$str = $item['title'];
こんな感じでできます。
まず、ヘルプに書いている様に、
phpincludeで呼び出すphp内で使用したいNucleus上の変数を、
'global $varname;'で、きっちりとコードに加えます。
その後、「globalfunctions.php」で拾い出した各メソッドを呼び出すと。
とにかくこのように、Nucleusは後から機能追加がしやすいCMSです。
このphpincludeを使用しても、便利な機能を追加できるかもしれません。
