ミニ白扇の使い方 (3)

Date 2006-09-01 13:00:24 | Category: XOOPS

in englishin japanese
ようやく、フィールドを追加する手順に入ります。白扇では、専用のテーブルを用意してますが、ミニ白扇では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 => '女' ) ,


ロジックの書き方は、次回に説明します。





You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp

The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=356