$xoopsOption['pagetype']

Date 2006-05-21 04:10:00 | Category: XOOPS

in englishin japanese
$xoopsOption['pagetype']
これ、なんだか判りますか?

読んで字の如く「ページタイプ」なのですが、おそらくはNukeの名残と思われ、XOOPS 2.0.xにおいては、コア機能(より正確にはルートコントローラ)の区別をつけて、適切な言語ファイルを読み込むためだけに利用されています。

実のところ、このようなグローバル配列をファイル間通信に利用するのは結構危険なことで、リクエストからインジェクションされる恐れがあります。(ファイル間通信を行うなら、定数かオブジェクトが安全)

また、ルートコントローラの存在しないXoopsCubeでは、完全に消え失せる運命でしょう。(こちらについてはgrepかけていませんが)

その「尾てい骨」こと $xoopsOption['pagetype'] ですが、XOOPS 2.2では再利用されています。$xoopsOption['pagetype'] == 'admin' の時だけ、管理者用のテーマを読み込む、という形になっているのです。

通常のモジュールであっても、/modules/(module)/admin/index.php などという形で管理者コントローラを実装した場合であれば、kernel/module.php において $xoopsOption['pagetype'] = 'admin'; と定義されるので、ほとんどの場合うまく行きます。

しかし、D3モジュールのように、完全なフロントコントローラを目指して、index.php?mode=admin などという形で管理者画面を実装した場合、公開用テーマが適用されてしまうことになります。

そこで、$xoopsOption['pagetype'] = 'admin'; を明示的に実行する必要があります。

以上、XOOPS 2.2にも利用できるモジュールを作る場合には覚えておいて損はないミニ知識でした。




You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp

The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=108