XPressME Integration Kit

ブログ

ブロックオプションでのマルチセレクトリストBOXの仕様変更

XOOPSのブロックオプションページで、マルチセレクトのリストBOXを作成するとき、
マルチセレクトの値は配列として取得しなければならないのに対し、
XOOPSのブロックオプション値は一つのオプションに配列値を格納することが出来ない仕様となっています。
そこで、マルチセレクトを使用する場合はオプション配列の最後にマルチセレクトのオプションを配置し、マルチセレクトで得られた配列をオプション配列に追加することで、実現する場合が多いようです。( Ver2.1Xまではこの方法を使っています)

このような実現方法の欠点は、マルチセレクトのリストBOXは1つしか配置できない点と、新たなオプションを追加する場合、少なくともマルチセレクト値の前の配列に挿入する必要がある、ブロックオプション数が固定できず、ブロックオプションチェックの対象にできない、ということです。

マルチセレクトのリストBOXの値をカンマ区切りなどで取得することで、これらの欠点は解消できるのですが、通常のHTMLタグでは実現不可能です。
更にXOOPSのブロックオプションのコードは <form>~</form>内のコードだけを記載する仕様(submit関連のコードはXOOPS側で用意されている)なので、更に厄介です。

このような経過から、XPressME Integration Kit Ver2.2.Xでは JavaScriptを使用して、マルチセレクトのリストBOXの値をカンマ区切りで取得する仕様としました。

これにより、ブロックオプションチェックはすべてのブロックについてチェック出来るようになりました。
また、場合によっては、マルチセレクトのリストBOXを複数配置することもできます。

但し、バージョンアップを行った場合には変更ブロックのブロックオプション値を再度設定しなおす必要があります。
対象となるブロックは
「最近の投稿」「最近の投稿内容」「人気の投稿」 のカテゴリー選択
「最近のコメント」 のコメントタイプ選択
「ウィジェット」 のウィジェット選択
となります。

コメントをどうぞ