エントリ一覧の「1件目」だけ特殊な出力をしたい場合

CMS Designerを「こんな風に使ってます」等の活用事例や、自分なりのTIPS等のご報告をお待ちしています。
返信
webmaster
Site Admin
記事: 1447
登録日時: 2004年12月10日(金) 10:09

エントリ一覧の「1件目」だけ特殊な出力をしたい場合

投稿記事 by webmaster » 2005年12月08日(木) 22:15

 エントリ一覧のデザインで、例えばCMS Designerの公式サイトのお知らせ欄の
ように、「1件目だけ詳しく表示したい」というような事があるかと思います。

 この場合、xsl:ifを使って、「1件目だったら」という判定を行います。

コード: 全て選択

  <xsl:if test="position()=1">
  </xsl:if>
 position()は「現在のエントリが、表示上の何番目か」を取得するXSLT関数です。

 具体例として、公式サイトトップページの「お知らせ」を表示するデザイン定義を
引用しておきます。

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
  <xsl:template match="/entrylist">
  
    <xsl:for-each select="entry">
    
      <div class="news">
        <div class="news_title">
          <span class="news_date">
            <xsl:value-of select="@year" />-<xsl:value-of select="@month" />-<xsl:value-of select="@day" /> 
          </span>
          <a href="newsentry.php{@href}" ><xsl:value-of select="title" disable-output-escaping="yes" /></a>
        </div>
        <xsl:if test="position()=1">
        <div class="news_description">
          <xsl:value-of select="description" disable-output-escaping="yes" />
        </div>
        </xsl:if>
      </div>
      
    </xsl:for-each>
          
  </xsl:template>
</xsl:stylesheet>

返信