エントリ一覧の「1件目」だけ特殊な出力をしたい場合
Posted: 2005年12月08日(木) 22:15
エントリ一覧のデザインで、例えばCMS Designerの公式サイトのお知らせ欄の
ように、「1件目だけ詳しく表示したい」というような事があるかと思います。
この場合、xsl:ifを使って、「1件目だったら」という判定を行います。
position()は「現在のエントリが、表示上の何番目か」を取得するXSLT関数です。
具体例として、公式サイトトップページの「お知らせ」を表示するデザイン定義を
引用しておきます。
ように、「1件目だけ詳しく表示したい」というような事があるかと思います。
この場合、xsl:ifを使って、「1件目だったら」という判定を行います。
コード: 全て選択
<xsl:if test="position()=1">
</xsl:if>
具体例として、公式サイトトップページの「お知らせ」を表示するデザイン定義を
引用しておきます。
コード: 全て選択
<?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>