LoginSignup
2
2

More than 5 years have passed since last update.

モジュールディレクトリ名と同じテーマがあれば、そのテーマで表示するプリロード

Last updated at Posted at 2013-08-13

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);
        }

    }
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2