XOOPS(XCL2.2,XoopsX)のプリロードとして書いてみた。
Suinさん作の簡易型テーマチェンジャーを応用、自分用に改造したもので、モジュールディレクトリと同名のテーマがあれば、そのモジュールでは当該テーマで表示するというものです。
まあ、何がしたいかというと、例えば、モジュール pico だけ違うテーマにしたい場合、利用するテーマのディレクトリを /themes/pico/ として、manifesto.ini.php のテーマ名記述部分を pico にすることで、「pico」というテーマが出来上がり、モジュール pico の場合、そのテーマで表示されるので、簡易型のテーマチェンジャーとして使えるかなぁ〜というものです。
もちろん、テーマディレクトリと同じテーマがなければ、通常のテーマで表示します。
ChangeThemeByModuleName.class.php
<?php
/**
* @file ChangeThemeByModuleName.class.php
* @package For legacy Cube Legacy 2.2
* @version $Id: ChangeThemeByModuleName.class.php ver0.03 2013/2/6 00:00:00 marine $
*/
class ChangeThemeByModuleName extends XCube_ActionFilter
{
public function postFilter()
{
$dirname = null;
$themePath = null;
if ( isset($this->mRoot->mContext->mModule->mXoopsModule) and is_object($this->mRoot->mContext->mModule->mXoopsModule) ) {
$dirname = $this->mRoot->mContext->mModule->mXoopsModule->get('dirname');
$themePath = XOOPS_THEME_PATH."/".$dirname;
}
// モジュールのディレクトリ名 dirname と 同じテーマがある場合、それを適用する
if (is_dir($themePath)) {
$themeName = $dirname;
}
if(isset($themeName)){
$this->mRoot->mContext->setThemeName($themeName);
}
}
}