Xoops ユーザー情報をカスタマイズする

Xoops

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

    Xoops を使った会員制サイトの構築はこちら

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です