絞込みでページ内容だけでなくタイトルも変えたい

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
mason
パワーユーザー
記事: 48
登録日時: 2007年7月02日(月) 18:36

絞込みでページ内容だけでなくタイトルも変えたい

投稿記事 by mason » 2007年12月12日(水) 11:36

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

現在、地域ポータルのサイトを構築中でして、市町村が9つ、施設名が19個あり、
1つのスキーマにて、それぞれをプルダウンメニューで選択させて
絞込みで表示させようと思っています。

そこで、問題なのですが、ページタイトルが「○○市の公民館」と絞り込んだ内容で
表示が変わるため、市町村9つ×施設19個の171枚のphpが必要になってしまい
どうしたものかと困っております。
できれば1つのphpでページの内容とタイトルを同時に変更できればベストですが
そのようなことは可能なのでしょうか?

また、このような絞込みのプルダウンメニューをたくさん設置させることは
負荷がかかり動作が遅くなると認識していますが、量が多いと表示できなくなる
といったことは考えられるのでしょうか?

知識不足ですみませんが、ご教授よろしくお願い致します。

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

Re: 絞込みでページ内容だけでなくタイトルも変えたい

投稿記事 by webmaster » 2007年12月13日(木) 14:45

 masonさん、ご質問ありがとうございます。いつもお世話になっております。

 絞込み表示を行った場合のタイトルですが、CMS Designerでは絞込み条件を
デザイン側から取得することができます。
 詳しくはリファレンスマニュアル「5.5.13 グループ絞込み条件を表示する」を
ご覧下さい。

 ただ、titleタグの中を変更しようとすると、どうしてもhtml全体をデザイン定義
でデザインする必要が出てくるかと思います。パフォーマンス的にはそれがベスト
なのですが、問題があった場合には別のデザイン定義に分離するという方法も
ございます。

 プルダウンメニューの数というのは、絞込み条件の数が増えるという事でしょうか。
 パフォーマンス的には、絞込み条件の数よりも、同一ページにcmsdタグがいくつ
埋め込んであるかの方が重要です。
 ただ、絞込みを使わない方が負荷は当然軽くなりますので、使わないにこしたことは
ありません。

 あまり負荷が高くなると、サーバから応答が返ってこなくなり、ページが表示
されないこともございますが、普通に1ページ中に1〜3箇所程度の埋め込みを
している場合であれば、絞込みをしていても通常問題が起こることはありません。
(サーバのスペックが極端に低い場合にはその限りではありません)

 どちらにせよ、一度サーバ上で動作させてみることは重要ですので、よくご確認
下さい。m(__)m

mason
パワーユーザー
記事: 48
登録日時: 2007年7月02日(月) 18:36

投稿記事 by mason » 2007年12月13日(木) 18:17

ご返答ありがとうございます。

すみません、詳しく状況をご説明できておりませんでした。

市町村分9つのエントリーがあり、それぞれ
同一のスキーマーで施設情報を入力させ、そこで
分類(公民館・映画館・・・・)をプルダウンメニューで選択し、
公民館のphpには「公民館」が選択された情報が並ぶことを想定しています。

その場合、公民館・映画館・・・・でそれぞれページタイトルが違うため
(○○市の公民館・・となります)
市町村分×分類分のPHPを用意しないといけないのでは、と思っておりましたが
1つのPHPで表示しようとすれば、リンク先のパラメーターで
http://xxx.xxx/xx.html?fac=1
と条件を与えておいて、

PHPのタイトル部分専用のデザイン定義をつくっておいて、
スキーマーで選択した内容によって表示を変えることはできますか?

コード: 全て選択

<cmsd:entrylist name="facility" design="title">
<cmsd:group key="fac">
</cmsd:entrylist>
また、PHPのページ内容の表示部分は下記のようになるのでしょうか?

コード: 全て選択

<cmsd:entrylist name="facility" design="default">
<cmsd:group key="fac">
</cmsd:entrylist>
以上で可能であれば、問題は「○○市の公民館」の「○○市」の部分ですが、
こちらは複雑になるのであれば9つ分PHPを用意しても良いと思っています。

伝わりにくいかもしれませんが、いかがでしょうか?


また、絞込みの数の件ですが、cmsdタグの問題とのことですが、
上記とは別のページになりますが、「1月〜12月までのエントリーから
Aという絞込みをされているものを表示する」という条件のPHPがあり、

コード: 全て選択

<cmsd:entrylist name="event1" design="default">
<cmsd:group key="A">
</cmsd:entrylist>

<cmsd:entrylist name="event2" design="default">
<cmsd:group key="A">
</cmsd:entrylist>

<cmsd:entrylist name="event3" design="default">
<cmsd:group key="A">
</cmsd:entrylist>

・
・
・

のように、絞込み表示用のCMSDタグが最低12つ並ぶページがあるのですが
パフォーマンス的にはやはり無理があるのでしょうか?
サーバーにもよるのでしょうか?

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

投稿記事 by webmaster » 2007年12月14日(金) 00:25

mason さんが書きました:市町村分×分類分のPHPを用意しないといけないのでは、と思っておりましたが
1つのPHPで表示しようとすれば、リンク先のパラメーターで
http://xxx.xxx/xx.html?fac=1
と条件を与えておいて、

PHPのタイトル部分専用のデザイン定義をつくっておいて、
スキーマーで選択した内容によって表示を変えることはできますか?
 はい、可能です。
 リファレンスマニュアル「5.5.13 グループ絞込み条件を表示する」が参考に
なるかと思いますので、一度ご覧になってみてください。

 また、絞込み条件は「施設」と「市」の両方指定することも可能です。
 もちろん、上記マニュアルページの方法を使って複数の条件を表示する
事も可能です。

 1〜12月の例ですが、月ごとに別のエントリフォルダを用意されている
ようですので、masonさんの方法しかないと思います。
 ただ、1ページに12個の埋め込みは、少しパフォーマンスが心配です。
 サーバのスペックや登録されるエントリ数にもよりますので一概には
言えませんが…。

 もし可能なら、月ごとにエントリフォルダを分けるのではなく、1つの
フォルダに分けてしまい、デザイン定義側で月ごとに分類して表示するという方法
を取れば、埋め込みは1つで済みます。

mason
パワーユーザー
記事: 48
登録日時: 2007年7月02日(月) 18:36

投稿記事 by mason » 2007年12月14日(金) 09:43

早速のお返事ありがとうございます。

施設の絞込みについては、「施設」と「市」の両方が指定できるとの事ですが、
「市」についてはエントリーでわけているのですが、デザイン定義はどのように
なりますでしょうか?
リファレンスでは、選択した値による切り替えの内容でしたので
少し混乱してしまい、知識不足で申し訳ありませんm(_ _)m

1月〜12月の例については、1つのフォルダにて管理ということですが、
エントリーが1つになるのでしょうか?
イベントカレンダーに適していないと知りながらも、イベントの時系列で
並べて表示しようとしていまして、このようなことになっております・・・。
1つのエントリーにすべての月の入力が並ぶことになると、月の絞込みをかける
ということになるのでしょうか?

度々申し訳ありませんが、宜しくお願い致します。

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

投稿記事 by webmaster » 2007年12月14日(金) 09:56

 masonさん、何度も申し訳ありません。お返事ありがとうございます。

 一度、「エントリ」と「エントリフォルダ」の違いを整理させて下さい。

 cmsdesginer/data/entry/news1/

 上記の「news1」がエントリフォルダです。

 <cmsd:entry name="news1" ・・・

 のように、cmsd:entry や cmsd:entrylist のname属性に指定します。

 このエントリフォルダに対して1件単位で新規追加していくのが「エントリ」
です。

 「市」についてはエントリで分けているとのことだったのですが、
これは「エントリフォルダで分けている」という認識でよろしかったでしょうか。

 もしそうであれば、仰る通り、別々のPHPページにするしかないかと思います。
 勘違いしておりまして、申し訳ありません。

 1〜12月の件ですが、要件を全て把握しているわけではないので常にこれが
適用できるとは限りませんが、私ならば、日付項目(年月、又は年月日項目)を
追加し、それを使ってソートした上で、デザイン定義上で

コード: 全て選択

<xsl:for-each select="entry[eventdate/@month='01']">
</xsl:for-each>  

<xsl:for-each select="entry[eventdate/@month='02']">
</xsl:for-each>  

 :

<xsl:for-each select="entry[eventdate/@month='12']">
</xsl:for-each>  
 のようにそれぞれの条件で絞り込んだ内容を出力するかもしれません。
 但し、昨年分の同月のエントリが残っていると一緒に表示されてしまうので、
昨年分は次々と消していく必要があります。

mason
パワーユーザー
記事: 48
登録日時: 2007年7月02日(月) 18:36

投稿記事 by mason » 2007年12月14日(金) 15:48

早速ありがとうございます。

エントリとエントリフォルダがごちゃごちゃになってしまい申し訳ありませんm(_ _)m

デザイン定義側でこのような絞込み条件が記述できるんですね。
この方法なら、ややこしくなくスムーズに出来そうです。
ありがとうございます :D
実際記述してみて不明点が出てきましたらまたご質問させていただくかもしれませんが、何卒宜しくお願い致します。

返信