ページ 11

チェックボックスのような感覚で絞込み

Posted: 2008年6月24日(火) 01:49
by OD1
お世話になります。
今回悩んでいますのは、チェックボックスのように複数項目を選択でき、その項目に当てはまるものは絞込みのページで表示するというものです。

<data name="categorylist" type="list" caption="カテゴリ選択" group="True">
<listitem caption="カテゴリ">
<data name="category" type="menu" caption="種別">
<menuitem id="1">A</menuitem>
<menuitem id="2">B</menuitem>
<menuitem id="3">C</menuitem>
</data>
</listitem>
</data>

このようなスキーマ定義をし、「AとBを選択しておけばAだけを表示するページにもBだけを表示するページにも両方に表示される」というようなものです。

phpのほうには

<cmsd:entrylist name="test1" design="default">
<cmsd:group key="categorylist"/>
</cmsd:entrylist>

としております。

ただCMSDの仕様としてこのような絞込みは無理だということはマニュアルを読んで分かりました。

悩んでいたのですが良い案が出ることなく質問させていただくことにしました。
何かよい案がありましたらご指導ください。

ちなみに選択項目は20くらいあり、できれば埋め込みページを増やすことなくURLで絞込条件を与えて呼び出したいです。

無理な質問かもしれませんがどうぞよろしくお願い致します。

Re: チェックボックスのような感覚で絞込み

Posted: 2008年7月03日(木) 10:43
by webmaster
 OD1さん、お返事が遅れまして申し訳ありません。
 webmasterです。

 チェックボックスのような仕組みについては、現状ですと、次のような方法が
ベターとなります。

コード: 全て選択

<data name="checkboxA" type="menu" caption="種別A" group="True">
  <menuitem id="yes">種別A</menuitem>
  <menuitem id="no">−</menuitem>
</data>

<data name="checkboxB" type="menu" caption="種別B" gruop="True">
  <menuitem id="yes">種別B</menuitem>
  <menuitem id="no">−</menuitem>
</data>

<data name="checkboxC" type="menu" caption="種別C" gruop="True">
  <menuitem id="yes">種別C</menuitem>
  <menuitem id="no">−</menuitem>
</data>
 スキーマ側では上記のように、項目毎に「yes/no」の選択肢があるメニュー
項目を用意します。

 埋め込みページ側では、

コード: 全て選択

<cmsd:entrylist name="test1" design="default">
<cmsd:group key="checkboxA" value="yes" />
</cmsd:entrylist>
 のようにしておけば、「種別A」を選択しているエントリが全て表示されます。

コード: 全て選択

<cmsd:entrylist name="test1" design="default">
<cmsd:group key="checkboxA" />
<cmsd:group key="checkboxB" />
<cmsd:group key="checkboxC" />
</cmsd:entrylist>
 上記のようにすれば、1つのページで、URLパラメータを変えることで様々な
絞込みが可能です。

例)種別Aのもののみ選択
 →http://xxx.xxx.xxx/test1.php?checkboxA=yes
例)種別Aかつ種別Cのものを選択(AND条件)
 →http://xxx.xxx.xxx/test1.php?checkboxA= ... ckboxC=yes
例)種別A又は種別Cものを選択(OR条件)
 →CMSDでは実現できません
  無理やりやる場合には、checkboxA=yesのURLとcheckboxC=yesの
  URLをIFRAMEで1つのページに別々で読み込んだり、AJAXを使うなどの
  方法があります。

 以上、いろいろとご面倒をおかけしますが、現状ではこのような感じです。
 ご不明な点がございましたらまたご連絡頂ければ幸いです。