PEAK XOOPS - How to use minihaku (1) in englishin japanese

Archive | RSS |
XOOPS
XOOPS : How to use minihaku (1)
Poster : GIJOE on 2006-08-27 17:05:28 (32866 reads)

in englishin japanese
minihaku is a module for XOOPS 2.0.x
In this document, you'll learn how to customize the designing of "registering user" and "editing user".

- install minihaku
- add a line into mainfile.php (refer README)
- You can redesign/remove form elements by editing minihaku_edituser.html or minihaku_register.html

If you want to remove elements of "email" or "password confirmation", create include/config.php like this.


<?php
$auto_belong_groups = array( XOOPS_GROUP_USERS ) ; // default (2)
$allow_blank_email = true ;
$allow_blank_vpass = true ;
?>


Of course, you can redesign/remove items by editing system_userinfo.html.
This is a conventional way.

In (2) or later, I'll write them.

- how to add elements into "registering user" form
- how to add elements into "editing user" form
- how to add items into account information


Related articles
Printer friendly page Send this story to a friend

Comments list

tomato  Posted on 2007/6/6 23:37
ご指導ありがとうございました。userモジュールのテンプレートをいじってみたら変えることができました。XoopsCube Legacy 2.1.0もいじることでいい勉強になりました、結果として4つのファイルを書き換えることで登録時の項目が変更できることがわかりました。
user
|_templates
|...|_user_register_form.html(新規登録画面)
|...|_user_register_confirm.html(新規登録の確認画面)
|
|_language
|...|_japanese
|......|_main.php(項目名称の変更)
|
|_forms
|...|_UserRegisterEditForm.class.php(データベースに登録)
|
つまづいたのは、新規登録画面と、新規登録の確認画面はFTPするだけでは反映されず、管理者メニューからテンプレートを書き換える作業がある点です。
1.互換レンダーシステムから
|_テンプレート管理
|_defaultのXOOPS Cube Default Template Set を複製

2.複製したテンプレートセットから
  ユーザーモジュール (16)を選択し、user_register_form.htmlとuser_register_confirm.htmlを編集します。

3.上記のUserRegisterEditForm.class.phpとmain.phpは普通にFTPで書き換えることでOKでした。

以上、ありがとうございました。
GIJOE  Posted on 2007/6/2 6:03
う〜ん。正直言って、試していないので判りません。

ミニ白扇って、もともとX2の弱点を補うためのものであって、ユーザ登録・アカウント編集関連もモジュール化/テンプレート化されているLegacy 2.1では、ほとんど意味がありません。

テンプレートをいじるだけなら、すなおに、userモジュールのテンプレートをいじるべきですし、ロジックもフックしたいなら、Legacy 2.1らしい方法を検討すべきでしょう。

ユーザ登録とかも、基本的にはデリゲートで実現しているので、まともにフックできるはずです。(あまり追ってないので自信はありません)
tomato  Posted on 2007/6/1 8:53
こんにちは、
このミニ白扇ですが、Xoops Cube 2.1でも使用できますでしょうか?
「ミニ白扇の使い方 (1)」の通りmainfile.phpに1行書き込みを行うところまでいってから試しに新規登録してみると、「_US_NOREGISTER」 と表示され前に進めません。
よろしくお願いいたします。
jidaikobo  Posted on 2007/1/16 16:48
GIJOE さん、jidaikobo です。
素早いご対応をいただいたのに、お返事遅くなってすみません。
ようやくダウンロードして拝見できました。

なるほど、array_pop ってのを使うんですね。
はじめての海外旅行みたいなもんで、何を聞いても勉強になっちゃうんですが、やっぱり勉強になりました

Quote:

GIJOE wrotes:
'stop_reasons' => array_merge( $stop_reason_extras , $stop_reasons ) ,
<br />が間に挟まるのが嫌で、あえてこの順番にした、という手抜きな経緯があったりします
確信犯だったんですね
いや、じつも僕もこれでいーかなーとかよぎったんですが……。
GIJOE  Posted on 2007/1/12 12:34 | Last modified
jidaikoboさん、こんにちは。

- エラーをまとめて表示する
- エラー表示順と余計な行が追加されてしまうこと
- エラー表示部分のテンプレート

いずれも修正してみました。

手抜きして 1.08a という形にしたので、表面上は変わったようにみえませんが、アーカイブのタイムスタンプで確認してください。

ちなみにこれ、
'stop_reasons' => array_merge( $stop_reason_extras , $stop_reasons ) ,
<br />が間に挟まるのが嫌で、あえてこの順番にした、という手抜きな経緯があったりします
jidaikobo  Posted on 2007/1/12 7:47
jidaikobo です。GIJOE さん、ご勘案ありがとうございます!

で、さっそく1.08で遊んでみたんですが、ちょっと気になることがあり、ご報告させてください。

1.08だと、オリジナルのエラーを吐こうとすると、エラー報告が2段階に分かれちゃいます。
たとえば下記のような入力必須項目を用意してみたんですが……

if( ! empty( $_POST['do_register'] )){
	if($_POST['familyname']==''){
		$stop_reason_extras[] = "姓は入力必須項目です。<br />";
	}
}

新規登録でいっさい入力せずにエンターすると、まずは minihaku の config のエラーからのみ処理されます。つまりエラーは「姓は入力必須項目です。」だけが表示されます。
で、このエラーを乗り越えると、あらためて ID を入れなさい、とかパスワードを入れなさい、というエラーが来ます。

これはどうやら54行目で、$stop_reason_extras の処理をしてから従来のエラーを処理しているからのようでして、段階を分けると、一発でエラーがくるようです。

if( ! empty( $_POST['do_register'] ) && empty( $stop_reason_extras ) && ! ( $stop_reason = userCheck( $allowed_requests['uname'] , $email4check , $allowed_requests['pass'] , $allowed_requests['vpass'] ) ) ) {
を下記のようにすると、エラーが来ます。
if( ! empty( $_POST['do_register'] ))$stop_reason = userCheck( $allowed_requests['uname'] , $email4check , $allowed_requests['pass'] , $allowed_requests['vpass'] );
if( ! empty( $_POST['do_register'] ) && empty( $stop_reason_extras ) && empty( $stop_reason ) ) {
いかがでしょうか??

■ここからは趣味の問題かもしれませんが、いちおうご報告。
で、こうすると、なんとなく169行目のエラー表示順をいじりたくなります。
ID やらパスワードのエラーの行に続けて追加項目のエラーを表示したいということです。

'stop_reasons' => array_merge( $stop_reason_extras , $stop_reasons ) ,
'stop_reasons' => array_merge( $stop_reasons , $stop_reason_extras ) ,

で、うかつにこれをしてしまうと、配列にしたエラー文字列が、explode の仕様のため、ひとつ余分に配列を作る(?)ため(末尾の<br />のせい?)、エラーの文字列の間に変な改行が追加されてしまいます(アサインされているstop_reasonsの順番をいじらなければ、フォームとエラー文の間の<br />になるからいいといえばいいんですが)。
で、エラー文字列からあらかじめ末尾の br をとると、うまくいくんですが、何ともかんともニンニンです。

■さらに趣味の問題ですが続けます。
せっかく配列わたしになったらテンプレートもこうしたいなーと思ったり
#たしかにあんまり HTML のタグまでアサインで渡してもらうよりこっちの方がうれしいですね。

<ul>
	<{foreach from=$stop_reasons item="reason"}>
		<li><strong style='color:#ff0000; font-weight:bold;'><{$reason}></strong></li>
	<{/foreach}>
</ul>
GIJOE  Posted on 2007/1/10 5:36
Quote:

jidaikobo wrotes:
die するんだったら config.php で完結するのかなーと思うんですが、せっかくなので、XOOPS の表示にあわせられないかなといじってみたんですが、
こっちの方がずっとスマートですね!
というわけで、さっそく取り込ませていただきました。

その取り込み方ですが、独立したエラー文字列を <br /> でつなげた文字列として持ち運ぶのは個人的に嫌なので、エラー文字列は配列として扱うことにしてます。

例えば、config.php において、
die( "invalid sex" ) ;
となっていたら、
$stop_reason_extras[] = "invalid sex" ;
とすることで、フォーム上部にエラー文が表示されるようになります。

エラー配列の展開はあくまでテンプレートで行います。

<span style='color:#ff0000; font-weight:bold;'>
	<{foreach from=$stop_reasons item="reason"}>
		<{$reason}><br />
	<{/foreach}>
</span>

従来型のアサインもしてますので、テンプレートの互換性がいきなりなくなる、ということはありません。


しかし、このエラー文の扱いをよく見たら、registerは<br />区切りで、edituserは配列、といういかにもXOOPSらしい統一感のないやり方になってますね
GIJOE  Posted on 2007/1/10 4:17 | Last modified
Quote:

jidaikobo wrotes:
僕のコメント投稿の BB code 表示も直してくださったんですね。ありがとうございました。あれ? とおもったんですが、放置してしまいました
例のクイック投稿からだと、デフォルトで「改行」しかONにならないんですよ。
このあたり、クイック投稿からでも、BBCodeとかを有効にすべきかどうか、悩みどころではあります。(クイック投稿フォームにはあまりボタンを配置したくないので)
とりあえず、このスレッドの最初の投稿については、勝手にBBCodeとスマイリーを有効にしました。

Quote:
ちなみに文例なので、修正の必要があるかどうか分らないんですが、ミニ白扇の使い方 (4)でも、false 表記になっています。いちおうお伝えまで。
ここは、config.php の書き方なので、config.dist.php のままになってます。
たぶん、これで問題ないはずです。
ご指摘ありがとうございました。
jidaikobo  Posted on 2007/1/9 8:22 | Last modified
お返事ありがとうございます(あ、アバターが青い?)。
僕のコメント投稿の BB code 表示も直してくださったんですね。ありがとうございました。あれ? とおもったんですが、放置してしまいました

たしかに落ち着いてコードを追っていくと、環境どうのこうのの問題でなかったですね。ハズかしい投稿をしてしまいました……。
ちなみに文例なので、修正の必要があるかどうか分らないんですが、ミニ白扇の使い方 (4)でも、false 表記になっています。いちおうお伝えまで。

Quote:
すり抜け方そのものは結構泥臭いですよ〜
コード読む前に、僕だったらどうするだろうと考えたんですが、コアをいじらないとどうにもならないように思い込んでいました。
僕みたいな初心者から見ると、なんというか、いろいろな問題をカロやかに一行でさっとかわしているような印象です。
……って、ご本人が泥臭いと評しておられるのに、あんまり言うと、気持ち悪いですね
jidaikobo  Posted on 2007/1/9 8:10 | Last modified
ミニ白扇の入力チェック例を考えてみまして、なんだか一見うまく動いているようなので、ご笑覧いただけたらとおもい。
die するんだったら config.php で完結するのかなーと思うんですが、せっかくなので、XOOPS の表示にあわせられないかなといじってみたんですが、僕のできるようにやろうとすると、registerhook.php をいじらずにはできませんでした
間抜けなことをしていたらごめんなさい。

■config.php(エラーを日本語で返すときは EUC で保存)
// request maintenances
$stop_reason_extra_fields = '';

if( ! empty( $_POST['do_register'] )){
	if($_POST['code_a']==''){
		$stop_reason_extra_fields .= "コードAは入力必須項目です。<br />";
	}
	if($_POST['code_b']==''){
		$stop_reason_extra_fields .= "コードBは入力必須項目です。<br />";
	}
}

■registerhook.php l53付近
if( ! empty( $_POST['do_register'] ) && ! ( $stop_reason = userCheck( $allowed_requests['uname'] , $email4check , $allowed_requests['pass'] , $allowed_requests['vpass'] ) ) && $stop_reason_extra_fields=='' ) {

■registerhook.php l161付近
	include XOOPS_ROOT_PATH.'/header.php' ;
+	$stop_reason .= $stop_reason_extra_fields;
	$xoopsOption['template_main'] = 'minihaku_register.html' ;

--追加です。
■edituserhook.php l86付近
アカウントの編集でも config で設定したエラーを表示する場合。
+	if (!$stop_reason_extra_fields == ''){
+		$errors[] = $stop_reason_extra_fields;
+	}
	if (count($errors) > 0) {

--shamefull typoがあったので、こっそり修正(fieldsの綴り)。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!