作業記録ノートに書いたんだけど、こっちにも一応。
ユーザ情報の項目を増やす方法について。
(註:これだけだとユーザ登録項目を増やしても DB には反映されない)
(註2:素人の Hack なので、真似してトラブっても責任はとれません(汗))
* * *
※注意!:Hack する際は後で箇所が分かるようにしておくこと。
1. phpMyAdmin でフィールドの追加
{prefix}_user テーブルにフィールドを追加。
・数値:TINYINT(絶対値のみを扱うなら UNSIGNED に設定)
・文字列:VARCHAR
2. 言語定数ファイルの編集(これもHack?)
出力する言語定数を編集する。
扱うファイルは /modules/user/language 以下、各言語 main.php
・接頭語:_MD_USER
・用語種別:_LANG(単語), _MESSAGE(メッセージ), _ERROR(警告文)
3. *.php を Hack
追加したフィールド(項目)をセットする。
・/karnel/user.php
function XoopsUser($id = null) {}(70行目~)内に
$this->initVar(‘{項目名}’, XOBJ_DTYPE_{データ型}, 初期値, false);
・/modules/user/class/users.php
/karnel/user.php と同じように編集。
・/modules/user/forms/EditUserForm.class.php
【function prepare()】
// set properties
$this->mFormProperties[‘{項目名}’] =& new XCube_{データ型}Property(‘{項目名}’);
// set fields
$this->mFieldProperties[‘{項目名}’] =& new XCube_FieldProperty($this);
$this->mFieldProperties[‘{項目名}’]->setDependsByArray(array(‘{※判定内容}’));
※required : 入力の有無
※maxlength : 最大文字数
※minlength : 最小文字数
※intRange : 数値幅(下限と上限は後述)
$this->mFieldProperties[‘{項目名}’]->addMessage(“{判定内容}”, _MD_USER_ERROR_{判定内容}, _MD_USER_LANG_{項目名}, “{判定基準値?}”);
$this->mFieldProperties[‘{項目名}’]->addVar(“{判定内容}”, {判定基準値});【function load(&$obj)】
$this->set(‘{項目名}’, $obj->get(‘{項目名}’));【function update(&$obj)】
$obj->set(‘{項目名}’, $this->get(‘{項目名}’));
4. Default テンプレートをコピー
[互換レンダーシステム] → [テンプレート管理] でテンプレをコピー。
1回とっておけば OK。
コピーをアクティブにして、こちらのテンプレを編集する。
5. テンプレートを編集
[altsys] → [テンプレートの管理] でテンプレを編集する。
・/ユーザモジュール/user_edituser.html
【項目を直接入力】
get(‘{項目名}’)}>【ラジオボタンで選択】
・/ユーザモジュール/user_userinfo.html
【項目をそのまま表示する場合】
getShow(‘{項目名}’)}>【項目内容によって表示を条件分岐する場合】
※条件文で項目内容を扱うときは $thisUser->getShow(‘{項目名}’) を使う
6. 動作確認と保存
動作確認して、成功していたらテンプレを Default 側にコピー。
(別の編集をしたときのクロスチェック用)