スタッフブログ

  • カテゴリ 総合的な情報 の最新配信
  • RSS

XOOPS 携帯対応(WizMobile) で、ユーザ名、パスワード入力をデフォルトで半角英数にする方法

Ryuji : XOOPS » 総合的な情報 2008/12/19 16:59

Blogger's Avatar

XOOPS の携帯対応についてよくご相談をうけます。
実際に WizMobile を導入して携帯から利用してみると、細かなところで気になるところがでてきたりするものです。

そんな気になるところの一つが、ログインフォームなどでユーザ名やパスワードを入れるときに、テキスト入力フォームへの入力モードがデフォルトだと全角文字入力になってしまうことです。

できたら、最初から半角英数の入力モードになっていて欲しいですよね。

携帯での入力モードの指定ですが、デフォルトで半角英数にするときは、次のように input タグの属性を指定すると良いそうです。

<input type="text" name="pass" istyle="3" format="*x" MODE="alphabet" />

なので、XOOPS のログインフォームのテンプレートをこのような形に修正してやればできそうな気がするのですが、ログインフォームのテンプレートを見ると次のようになっていて、istyle や format という属性を追加しても、出力される HTML では、この属性が削除されてしまいます。
<!-- こんなふうに input タグを使わないで Smarty プラグインで input タグを出力しています -->
  <{xoops_input type=password name=pass size=12 maxlength=32
 id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_pass"}>
これを下記のように書き換えてもダメなんですね。
  <{xoops_input type=password name=pass size=12 maxlength=32
 id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_pass"
 istyle="3" format="*x" MODE="alphabet"}>

何故かというと、 xoops_input プラグインのコードを見ると、xoops_input プラグインは特定の属性だけを HTML に出力するようになっているようで、プラグイン呼び出し時に想定外の属性をつけても無視されるようになっているからです。

istyle や format, MODE というのは想定外の属性になっちゃうんですね。

# 余談ですが、これはサンデープログラマがうっかりテンプレート上で XSS を作り込まないためにこうなってたんだと思います。

さて、そこで xoops_input プラグインをちょっといじって、指定された属性(ほんとうはプラグインに渡すパラメータですが)を全て出力するように書き換えてみました。

パラメータ全部出力型 function.xoops_input.php

これを XOOPS_ROOT_PATH/class/smarty/plugins/function.xoops_input.php と入れ替えても良いですし、ホダ塾ディストリビューション「HD」でしたら、XOOPS_TRUST_PATH/libs/smartyplugins/ に置いても OK です。

これで、先ほどのように istyle,format, MODE の属性を追加すれば、携帯でユーザ名やパスワードを入力しようとしたときに、デフォルトで半角英数の入力モードになります。

WizMobile をご利用の方は、是非おためしください。

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.