ようやく、フィールドを追加する手順に入ります。白扇では、専用のテーブルを用意してますが、ミニ白扇ではusersテーブルをALTERしちゃいます。理由は、そっちの方が楽だから、です
フィールドを追加する場合でも、やることは基本的に一緒です。ユーザ情報関連の3種類のテンプレートをカスタマイズして、include/config.php にロジックを記述する、それだけです。違いは、その作業の前にALTER TABLEを行うこと、ロジックの記述がちょっとだけ複雑になること、の2点です。
実は、ミニ白扇には最初からサンプルが入っていますので、そのサンプルに従って、「性別(sex)」と「誕生日(birth)」をusersテーブルに追加して、ユーザ登録・情報・編集の3つのビューにも表示するようにしましょう。
I. ALTER TABLEする(DBのusersテーブルにフィールドを追加する)
泥臭いと言われそうですが、usersテーブルをALTERしちゃいます。phpMyAdminを使っていれば簡単でしょう。フィールドを追加するだけです。 もちろん、SQLに慣れている人は、直接発行してください。
ALTER TABLE (prefix)_users ADD sex tinyint not null default 0 ; ALTER TABLE (prefix)_users ADD birth date not null default '1950-01-01' ;
性別みたいに、取り得る数値が限られている場合、本当はint型より、enum型の方がいいのですが、ここでは細かいことは言いません。
II. 各種テンプレートを書き換える
判っていると思いますが、テンプレートを書き換える、とは、modules/(dirname)/templates/下のファイルを編集することじゃありませんよ。必ず、altsysかtplsadminを使ってください。
II-1 登録フォームに追加 minihaku_register.html を編集して、以下の部分を挿入。
<tr valign="top" align="left">
<td class="head">性別</td>
<td class="even">
<{html_radios name="sex" options=$sex_options selected=$sex}>
</td>
</tr>
<tr valign="top" align="left">
<td class="head">誕生日</td>
<td class="even">
<{html_select_date field_order="YMD" month_format="%m" day_format="%02d" start_year="-100" end_year="-1" time=$birth }>
</td>
</tr>
実は、コメントアウトしてあるだけなので、<{* と *}> を外すだけでも動きます。
II-2 編集フォームに追加 minihaku_edituser.html を編集して、以下の部分を挿入。
<tr valign="top" align="left">
<td class="head">性別</td>
<td class="even">
<{html_radios name="sex" options=$sex_options selected=$sex}>
</td>
</tr>
<tr valign="top" align="left">
<td class="head">誕生日</td>
<td class="even">
<{html_select_date field_order="YMD" month_format="%m" day_format="%02d" start_year="-100" end_year="-1" time=$birth }>
</td>
</tr>
実は、コメントアウトしてあるだけなので、<{* と *}> を外すだけでも動きます。
II-3 アカウント情報画面に追加 system_userinfo.html を編集して、以下の部分を挿入。
<tr valign="top">
<td class="head">性別</td>
<td class="odd"><{$user_uid|minihaku_userinfo:"sex":"uid"}></td>
</tr>
<tr valign="top">
<td class="head">誕生日</td>
<td class="odd"><{$user_uid|minihaku_userinfo:"birth":"uid"}></td>
</tr>
ここでエラーが出るようなら、おそらくSmartyプラグインが入っていません。class/smarty/plugins/modifier.minihaku_userinfo.php をXOOPSにコピーしてください。
III. include/config.php を用意してロジックを記述。
include/config.dist.php がまさにそのロジックなので、これを config.php にリネームすれば終わりです。 ただ、一箇所だけ、
'options' => array( 0 => 'male' , 1 => 'female' ) ,
という部分は日本語にしておいた方が良いでしょう。
'options' => array( 0 => '男' , 1 => '女' ) ,
ロジックの書き方は、次回に説明します。
|