特定の項目をエントリーごとに抽出したい

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

特定の項目をエントリーごとに抽出したい

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

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

新着情報の画像部分のみを抽出してトップページに表示しようと思っていますが、
画像は1つではなく、新着情報のエントリーごとに1つずつ抽出して
最新のものから3つ表示させたいと思っています。

最新のものから何番目のエントリーの画像・・・などという指定は
PHPへの埋め込み時に可能なのでしょうか?

初歩的なことでしたら申し訳ありませんが、ご教授宜しくお願い致しますm(_ _)m

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

Re: 特定の項目をエントリーごとに抽出したい

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

 masonさん、ご質問ありがとうございます。
 お返事遅れまして申し訳ありません。

 まず、最新の3件ということで、

コード: 全て選択

<cmsd:entrylist name="xxx" design="xxx" rows="3" />
 で、最新の3件のみの表示になります。
 デザイン定義の方は、それに合わせて画像のみを表示するようにすれば、

コード: 全て選択

<xsl:template match="entrylist">
  <xsl:for-each select="entry">
    <img src="{myimage1}" />
  </xsl:for-each>
</xsl:templaet>
 のような感じでご希望の結果が得られるのではないかと思います。

 補足事項として、「n番目のエントリ」を直接指定する方法としては、

コード: 全て選択

<xsl:for-each select="[color=red]entry[1][/color]">
  <!-- ここにエントリ表示用のコードを書く -->
</xsl:for-each>
 のように、entryの後に[1]のように番号をつけることで、指定した番目の
エントリのみを選択することができます。
 これは、entry[position()=1] と書くのと等価です。

 指定した「エントリ番号」のエントリを選択したい場合には、
 entry[@id='00005']のように書くことも可能です。

 それらのエントリが存在しない場合には、その内容はまったく出力されません。

 以上、ご不明な点がございましたらまたご連絡頂ければ幸いです。

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

投稿記事 by mason » 2007年11月30日(金) 11:38

ご回答ありがとうございました。

リスト項目内の画像を取得したかたったので、上記の記述に加えて、
「pagedetaというリスト項目内の一番上のimage1を取得する」という事で
下記の記述で上手くいきました!

ありがとうございました。

コード: 全て選択

	<xsl:if test="not(pagedata/listitem/image1='')"> 
	<xsl:for-each select="pagedata/listitem">
	<xsl:if test="position()=1"> 
	<xsl:if test="not(image1='')">
<a href="photo.php{@href}"><img src="{image1}" width="105" height="79" /></a></xsl:if>
	</xsl:if>
	</xsl:for-each>
	 </xsl:if>

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

投稿記事 by mason » 2007年12月03日(月) 16:15

すみません、上記の記述で{@href}の箇所が{../../@href}の間違いでした。
こちらからコピーしてお使いの方いらっしゃいましたら、ご注意ください・・・。
正しいコードは下記になりますので、よろしくお願いします。

コード: 全て選択

<xsl:if test="not(pagedata/listitem/image1='')"> 
   <xsl:for-each select="pagedata/listitem"> 
   <xsl:if test="position()=1"> 
   <xsl:if test="not(image1='')"> 
<a href="photo.php{../../@href}"><img src="{image1}" width="105" height="79" /></a></xsl:if> 
   </xsl:if> 
   </xsl:for-each> 
    </xsl:if>

返信