絞込みについて

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
nitchan
アクティブユーザー
記事: 11
登録日時: 2005年10月11日(火) 15:48

絞込みについて

投稿記事 by nitchan » 2007年6月07日(木) 12:21

いつもお世話になっています。

URLパラメータから絞込みをしていますが,例えば

"address" という小項目と
"area" の大項目の二つのmenuタグを設定していて,

group key="address"で「1」を指定して絞込みをし一覧表示させ,
同じphpに別途"address"で「1」を含んでいる"area"大項目の一覧を
別途表示させることは可能でしょうか?

具体的には
A町やB町,C町,D町というaddressがあり,A町とB町はア地区というareaにあり,
A町で検索し,まずA町にある店舗を一覧表示させ,その下に,同じareaには「A町以外にこのような店舗があります」という一覧を表示させたい場合です。

このような絞込み検索はできますでしょうか?
すみませんがご教授下さい。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 絞込みについて

投稿記事 by webmaster » 2007年6月07日(木) 16:02

 nitchanさん、いつもお世話になっております。

 ご質問の件ですが、単純には難しそうです。
 イメージとしては、

コード: 全て選択

<cmsd:entry name="shops1" design="design1">
  <cmsd:group key="address" />
</cmsd:entry>

<cmsd:entry name="shops1" design="design2">
  <cmsd:group key="area" />
</cmsd:entry>
 のように2つのエントリ一覧を並べる形になると思います。
 しかし、address=1で絞り込んだ場合にはareaは指定されていませんから
二つ目のエントリ一覧には全件が出力されてしまいます。

 JavaScriptを使って、絞込みフォーム側で「addressとしてA町が
選ばれた場合はarea=1も一緒に指定する」というような事をやれば
うまく行くかもしれませんが、script側にaddressとareaの対応表を
持つ必要があり、情報の二重管理になってしまいます。

 JavaScriptに物凄く慣れた人なら、CMSDから全店舗の情報をJavaScript
で取得し、addressとareaの対応表を作成するということもできるかも
しれませんが、そもそも複雑ですし、表示の度にそれが行われるのも
パフォーマンス的に良くないと思います。

 代わりに、IFRAMEを使ったこういう方法はいかがでしょうか。

 まず、○町にある店舗一覧を表示させる為のデザインを書きます。

コード: 全て選択

<xsl:template match="entrylist">
  <xsl:for-each select="entry">
    ※店舗情報を出力
  </xsl:for-each>

  <xsl:if test="count(entry)>0">
    <!-- 先頭エントリからareaを取得する -->
    <xsl:variable name="area" select="//entry[1]/area/text()" />
    <!-- IFRAMEを使ってarea内一覧を出力する -->
    <iframe src="listofarea.php?area={$area}" name="listofarea"><a href="listofarea.php?area={$area}">同一地域の店舗一覧を表示する</a></iframe>
  </xsl:if>
</xsl:template>
 つまり、addressを指定して店舗一覧を表示する際にはそのareaが確定
する(同一addressならばareaも全て同一になる為)ので、先頭エントリ
からareaを取ってきて、それをまた別のリクエストとして別ページに投げて、
その結果をIFRAMEとして同じページに表示する、というものです。

 listofarea.phpと、それに対応するエントリ一覧用デザイン定義は別途
作成する必要があります。

 かなり省略して書かせて頂きましたが、お分かり頂けるでしょうか。
 ご不明な点は再度ご質問頂ければと思います。
 
 ただ、そもそも現在のCMS Designerでは、親子関係を持つようなデータ
構造を扱いづらくなっています。
 今回のようなスキーマでも、addressとareaの対応付けは入力する側が
保証してやる必要があります。

 全く別の方法として、スキーマの単位を「店舗」ではなく「町」単位に
するという方法があるかもしれません。
 そして、店舗情報はリスト項目として保持します。
 こうすれば、もっと単純な解決が可能ですが、今度は店舗を単独で表示
させたりすることができなくなる為、おそらく今回の目的には合わないと
思います。

 以上、長くなってしまいましたがよろしくお願い致します。

nitchan
アクティブユーザー
記事: 11
登録日時: 2005年10月11日(火) 15:48

Re:Re: 絞込みについて

投稿記事 by nitchan » 2007年6月11日(月) 10:32

webmaster様

いつも迅速なアドバイスありがとうございます。
いいアイデアが思いつかず詰ってしまっていたので助かりました。

iframeを使用することは思いつきませんでした。
ただ,
・当サイトで設定しているWEBアクセシビリティでframe使用が制限されている
・area内の情報をiframe内で表示させても同じaddressの情報が重複して表示されてしまう
これらがちょっと気になります。

もうちょっと勉強してみますが,あまり当初の希望に固執しないで,「同じ地区にはこんな店舗があります」とリンクを貼ることを検討してみます。

今後ともよろしくお願いいたします。

返信