PEAK XOOPS - ミニ白扇の使い方 (3) in englishin japanese

Archive | RSS |
XOOPS
XOOPS : ミニ白扇の使い方 (3)
Poster : GIJOE on 2006-09-01 13:00:24 (15082 reads)

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 => '女' ) ,


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


Related articles
Printer friendly page Send this story to a friend

Comments list

tsujiemon  Posted on 2006/12/9 20:17
自己レスです。

うまくいかなかった原因がわかりました。
minihaku_register.phpの記述がまずかったようです。
以下、修正したものです。
---------
<td class="even"><select name="user_from"><{html_options options=$user_from_options selected=$user_from}></select></td>
---------

また、「$sex_options」という変数をセットしている場所もわかりました。
registerhook.phpの最後の方でやっているんですね。


お騒わせしまして申し訳ありませんでした。
tsujiemon  Posted on 2006/12/9 18:35
PHP初心者です。(Javaエンジニアです) 基本的なことなのかもしれませんが、わからないので、教えていただきたいのですが。

「II-1 登録フォームに追加」のところで「$sex_options」という変数を使われていますが、この変数にはどこで値がセットされるのでしょうか?

都道府県のセレクトボックスを追加しようとしているのですが、うまくいきません。
下記のような感じで行っています。
minihaku_register.php
---------
<td class="even"><select name="user_from">{html_options options=$user_from_options selected=$user_from}</select></td>
---------

config.php
---------
$extra_fields = array(
'user_from' => array(
'initval' => -1,
'options' => array(
1 => '北海道',
2 => '青森県',

---------

よろしくお願い致します。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!