Xoops ユーザー情報に好きな項目を追加する
Xoops Cube Legacy-2.1.x
Xoopsのユーザー情報設定は硬直的で、追加したり減らしたりが難しいです。
ICQ、AIM、YIMなどのいらない情報をHTMLテンプレート上で消すことは簡単ですが、項目を追加するとなるとひと手間かかります。
注意:下記の手順はソースコードのHackになります。バックアップを取って自己責任で行ってください。
修正ファイル一覧
○phpファイル
・/kernel/user.php
・/modules/user/forms/UserRegisterEditForm.class.php
・/modules/user/class/users.php
・/modules/user/forms/EditUserForm.class.php
・/modules/user/admin/forms/UserAdminEditForm.class.php
・/preload/ThemeLanguage?.class.php (新しく作る)
○htmlファイル
/modules/user/admin/templates/user_view.html
/modules/user/admin/templates/user_search.html
/modules/user/admin/templates/user_edit.html
○ユーザーモジュールテンプレートファイル
・user_userinfo.html
・user_register_form.html
・user_register_confirm.html
・user_edituser.html
例では、invitationという項目を作ります。
invitationという項目には、フリーのテキストが入るとします。
ここでは、まず項目の設定と、データベースから読みだすまでを紹介します。
- /kernel/user.php
function XoopsUser
内に
$this->initVar('invitation', XOBJ_DTYPE_TXTBOX, null, false, null);
を追加
- 同じファイルに下記のメソッドを追加
function invitation() { return $this->getVar("invitation"); }
- データベースで、プリフィックス_usersテーブルにinvitation というフィールドを追加
- ユーザー情報の表示テンプレート、user_userinfo.htmlに次のように追記する。ほかのテンプレートにおいても、次のような形で情報の取得が可能
<tr valign="top"> <td class="head">お誘い</td> <td class="<{cycle values='odd,even'}>"><{$thisUser->getShow('invitation')}></td> </tr>
「お誘い」の部分は、/preload/直下に、「ThemeLanguage.class.php」というファイルを作って、以下のように定義する。
user_userinfo.htmlに追記する部分は以下のようになる。
<tr valign="top"> <td class="head"><{$smarty.const._MD_USER_INVITATION}></td> <td class="<{cycle values='odd,even'}>"><{$thisUser->getShow('invitation')}></td> </tr>
データベースへ入力する部分は、Xoops ユーザー情報をカスタマイズする2で紹介します。
ちなみに
/modules/user/UserInfoAction.class.php
がユーザー情報表示本体です。
続き:Xoops ユーザー情報をカスタマイズする2