まとめて登録したエントリを各ユーザーごとに表示するには

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

まとめて登録したエントリを各ユーザーごとに表示するには

投稿記事 by sal » 2008年10月07日(火) 17:26

こんにちは。
現在、店舗を何件か経営するペットショップのホームページを作成しているのですが、

トップページには、ペット情報として、全てのショップごとにユーザー権限を与え、
一つのスキーマの中にどんどん登録していってもらい、
各ショップの詳細ページには、各ショップユーザーが登録した分だけを
表示させたいのですが、その際の、ユーザーごとのソートはどのように
すればよいのでしょうか?
ショップとしては、たくさん数があり、これからも増える可能性があるため
一件ごとに、いちいち定義するというわけにはいかず困っています。

そして、もう一つ質問があるのですが、メニュー(menu)項目を利用して、
各県ごとにショップ情報を登録していくようにしたいのですが、
もし、登録のない県があった場合、

・その県の表示をしないようにさせる
・『こちらの県には登録はありません』のような文章を表示させる

以上どちらかでもよいのですが、xsl:ifで実現する事は可能でしょうか?
もし可能でしたら、どのように表記をすればよいのでしょうか?

どうかよろしくお願い致します

moheji
記事: 1
登録日時: 2008年10月27日(月) 04:12

まとめて登録したエントリを各ユーザーごとに表示する方法

投稿記事 by moheji » 2008年10月27日(月) 04:22

>各ショップの詳細ページには、各ショップユーザーが登録した分だけを
>表示させたいのですが、その際の、ユーザーごとのソートはどのように
>すればよいのでしょうか?

ソートについて、ちょっと意味がとれていないので間違っているかもしれませんが、
「まとめて登録したエントリを各ユーザーごとに表示する」には、
以下のような感じでできるかと。

コード: 全て選択

<ul>
  <xsl:for-each select="entry">
      <xsl:if test="@author='●●●●'">
        <li> エントリーを表示 </li>
      </xsl:if>
  </xsl:for-each>
</ul>
●●●● にユーザーIDを入れれば、そのユーザーのエントリーのみ表示されます。

sal
アクティブユーザー
記事: 23
登録日時: 2006年11月20日(月) 11:53

お返事ありがとうございます

投稿記事 by sal » 2008年10月27日(月) 18:24

moheji様
お返事ありがとうございます。私の説明がわかりにくくて申し訳ありません。

moheji様がお答え下さった
「まとめて登録したエントリを各ユーザーごとに表示する」
という内容で間違いはないのですが、ショップ一件ごとにエントリを作成し、
ユーザーidを設定するという表示の仕方ではなく、
ショップ詳細のページに、各ショップが登録したペットだけを自動で
表示させたいのです。
site.config.xmlには、

コード: 全て選択

<entry name="separator1" type="separator" caption="ショップ詳細登録" />
<entry name="shop" schema="shop" caption="ショップ詳細登録">
<permit users="(publisher)" mine="edit" others="none" />
</entry>
		
<entry name="separator2" type="separator" caption="ペット登録" />
<entry name="pets" schema="pets" caption="ペット登録">
<permit users="(publisher)" mine="all" others="none" />
</entry>
と、ショップの詳細と、ペットの登録が出来るようにして、
トップページのphpファイルには、

コード: 全て選択

<cmsd:entrylist name="pets" design="top">
と、埋め込み、全ショップのペットの登録を表示させ、
ショップ詳細ページのphpファイルには、

コード: 全て選択

<cmsd:entry name="shop" design="info"/>
<cmsd:entry name="pets" design="shop" cols="4" />
と、埋め込みました。
そして、ショップ詳細ページのphpファイルのペット情報のデザイン定義には、

コード: 全て選択

<xsl:template match="/entrylist">

<table>

<xsl:for-each select="row">

  <tr>
  <xsl:for-each select="entry">
  
    <td width="120" align="left" valign="top">
    <a href="{petimg}" target="_blank"><img src="{petimg}&w=120&h=120" alt="{petimg/@alt}" border="0" /></a><br/>
    <xsl:value-of select="petname" disable-output-escaping="yes" />
    </td>
    
  </xsl:for-each>
  </tr>
  
</xsl:for-each>
  
</table>

</xsl:template>
以上のように、定義したのですが、ここにxsl:if文等を利用して、ユーザー1件分の
ペット情報を表示させればよいのだろうというのはわかるのですが、
その命令文は、どのように書けばよいのでしょうか?
またまたわかりにくい説明で申し訳ありませんが、
どうかよろしくお願い致します。

さとう
アクティブユーザー
記事: 24
登録日時: 2007年2月01日(木) 21:22

まとめて登録したエントリを各ユーザーごとに表示する方法

投稿記事 by さとう » 2009年5月20日(水) 21:26

ショップとペットのエントリに、同じ番号を割り当てれば出来ます。

■スキーマ

返信