ブログ - ユーザー登録画面のカスタマイズ (Preload版) その1
以前ユーザ登録画面のカスタマイズをHackで対応してみた。「ユーザー登録画面のカスタマイズ」
今回はプリロードを使ってHackなしで対応してみる。
以下は [XCL 2.1.4] [XCL 2.1.5] で試してみたもの...
今回はプリロードを使ってHackなしで対応してみる。
以下は [XCL 2.1.4] [XCL 2.1.5] で試してみたもの...
_
■機能:名前を登録項目にする。
とりあえず XOOPS_TRUST_PATH/modules/ に user/ ディレクトリを作成する。
まずフックのための仕掛け作り。プリロードを作る。
preload/Primary/HookUser.class.php
続いて、このプリロードが機能するようにする。
XOOPS_TRUST_PATH/modules/ の下に作ってしまったので、setting/site_default.ini.php に書くことができない...
シンボリックリンクが使えるなら XOOPS_ROOT_PATH/preload からシンボリックリンクを張るとか
使えないなら、XOOPS_ROOT_PATH/preloadへコピーする。
これで XOOPS_TRUST_PATH/modules/user/actions/ の下に ...ActionEx.class.php というファイルがあれば、元の ...Action.class.php の代わりに使われるようになる。
その2へ続く...
    ■機能:名前を登録項目にする。
とりあえず XOOPS_TRUST_PATH/modules/ に user/ ディレクトリを作成する。
まずフックのための仕掛け作り。プリロードを作る。
preload/Primary/HookUser.class.php
<?php
class HookUser extends XCube_ActionFilter {
    function preFilter() {
	$root = $this->mRoot;
	$root->mDelegateManager->add('User_ActionFrame.CreateAction', 'HookUser::_createAction', XCUBE_DELEGATE_PRIORITY_NORMAL-1);
     }
    function _createAction(&$actionFrame) {
	if (is_object($actionFrame->mAction)) {
		return;
	}
	
	//
	// Create action object by mActionName
	//
	$className = "User_" . ucfirst($actionFrame->mActionName) . "ActionEx";
	$fileName = ucfirst($actionFrame->mActionName) . "ActionEx";
	if ($actionFrame->mAdminFlag) {
		$fileName = XOOPS_TRUST_PATH . "/modules/user/admin/actions/${fileName}.class.php";
	}
	else {
		$fileName = XOOPS_TRUST_PATH . "/modules/user/actions/${fileName}.class.php";
	}
	if (!file_exists($fileName)) return;
	require_once $fileName;
	if (class_exists($className)) {
		$actionFrame->mAction =& new $className($actionFrame->mAdminFlag);
	}
    }    
}
?>
続いて、このプリロードが機能するようにする。
XOOPS_TRUST_PATH/modules/ の下に作ってしまったので、setting/site_default.ini.php に書くことができない...
シンボリックリンクが使えるなら XOOPS_ROOT_PATH/preload からシンボリックリンクを張るとか
使えないなら、XOOPS_ROOT_PATH/preloadへコピーする。
これで XOOPS_TRUST_PATH/modules/user/actions/ の下に ...ActionEx.class.php というファイルがあれば、元の ...Action.class.php の代わりに使われるようになる。
その2へ続く...