ブログ - ユーザー登録画面のカスタマイズ (Preload版) その1

ユーザー登録画面のカスタマイズ (Preload版) その1

カテゴリ : 
Customize/Hackメモ » お決まりのパターン
執筆 : 
masa 2008/9/20
以前ユーザ登録画面のカスタマイズをHackで対応してみた。「ユーザー登録画面のカスタマイズ」

今回はプリロードを使ってHackなしで対応してみる。
以下は [XCL 2.1.4] [XCL 2.1.5] で試してみたもの...
_
■機能:名前を登録項目にする。

とりあえず 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へ続く...
  • トラックバック (0)
  • 閲覧 (4129)