表題が分かりにくいのですが【お知らせ】としてCMSDに登録されているエントリ件数
が30件あったと仮定して【TOPページ】では、すべて(30件分)のタイトルだけを表示
して各タイトルには【お知らせ詳細ページ】へリンクを付けています。
【お知らせ詳細ページ】では、ナビゲーション機能を使って、10件づつ表示させたいの
ですが【TOPページ】からナビゲーションで移動した【お知らせ詳細ページ】2ページ
以降へのリンク方法で悩んでおります。
if 文などで、エントリ件数が10以上なら、URLの最後に ?pageno=2 を付ける、、なども
考えたのですが、エントリ件数が膨大に増えれば、対応するif文も増やさなければならず
何かよい方法がございましたら、ご教授頂ければ幸いです。
【デザインスキーマ/お知らせTOPページ用】
コード: 全て選択
<?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" indent="no" />
<xsl:template match="/entrylist">
<xsl:for-each select="entry">
<dl>
<dt><a href="information/index.html#{@id}" target="_parent"><xsl:value-of select="substring(title/text(), 0, 30)" disable-output-escaping="yes" /></a></dt>
</dl>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
【デザインスキーマ/お知らせ詳細10件表示用】
コード: 全て選択
<?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">
<a name="{@id}"></a>
<h2><xsl:value-of select="substring(title/text(), 0, 27)" disable-output-escaping="yes" /></h2>
<xsl:value-of select="body" disable-output-escaping="yes" />
</xsl:for-each>
<div class="pagination">
<xsl:for-each select="navi">
<!-- 前のページが存在すれば、前のページへのリンクを表示する。 -->
<xsl:for-each select="prev">
<a href="{@href}"><b><</b></a>
</xsl:for-each>
<!-- 前のページが存在しなければ、「前のページへ」をリンクなしで表示する。 -->
<xsl:if test="not(prev)"><span class="disabled">
<b><</b></span>
</xsl:if>
<!-- ページへの直接リンクを表示する。 -->
<xsl:for-each select="page">
<!-- 現在のページについては強調でページ番号を表示する(リンクにはしない) -->
<xsl:if test="../@position=@id"><span class="current">
<xsl:value-of select="@id" /></span>
</xsl:if>
<!-- 現在のページ以外は、ページ番号をリンクで表示する。 -->
<xsl:if test="not(../@position=@id)">
<a href="{@href}"><xsl:value-of select="@id" /></a>
</xsl:if>
</xsl:for-each>
<!-- 次のページがあれば、次のページへのリンクを表示する。 -->
<xsl:for-each select="next">
<a href="{@href}"><b>></b></a>
</xsl:for-each>
<!-- 次のページが無ければ、「次のページへ」をリンクなしで表示する。 -->
<xsl:if test="not(next)"><span class="disabled">
<b>></b></span>
</xsl:if>
</xsl:for-each>
</div>
</xsl:template>
</xsl:stylesheet>
難易度の高い場合や難しい場合には、ナビゲーションを付けない一件表示用のページ
を作ることで対応したいとおもいます。