タイトル一覧から任意ページへのリンク

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

タイトル一覧から任意ページへのリンク

投稿記事 by mojira » 2007年8月08日(水) 12:20

お世話になります。

表題が分かりにくいのですが【お知らせ】として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>
PS
難易度の高い場合や難しい場合には、ナビゲーションを付けない一件表示用のページ
を作ることで対応したいとおもいます。

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

Re: タイトル一覧から任意ページへのリンク

投稿記事 by webmaster » 2007年8月08日(水) 14:45

 mojiraさん、ご質問ありがとうございます。
 ひょっとしてご質問の意図とズレているかもしれないのですが、おそらく
リファレンスマニュアル「6.3.13 一覧−詳細連動機能」がお役に立てるかと
思います。

 この機能は、「同一ページに詳細とタイトル一覧を表示した場合に、それらの
ナビゲーションを連動させる」為の機能ですが、やっていることは主に

・一覧画面にpagenoではなくeidが与えられた場合に、該当エントリを含む
 ページを自動的に表示する。
・詳細画面にeidではなくpagenoが与えられた場合に、そのpagenoの先頭
 エントリを自動的に表示する。

 の2点です。

 ですので、cmsd:entrylistタグに、interlock="yes"の属性を加えてから、
タイトル一覧側のデザイン定義では、

<a href="information/index.html?eid={@id}#{@id}" target="_parent">

 のようにすると、うまくいくのではないかと思います。
 (ところで、エントリIDをアンカーとして使うアイデアはniceですね!)

 一度お試し頂ければ幸いです。

mojira
パワーユーザー
記事: 34
登録日時: 2007年8月08日(水) 11:41

連動機能が使えるのですね

投稿記事 by mojira » 2007年8月09日(木) 01:42

「6.3.13 一覧−詳細連動機能」が使えるのですね、大変にわかりやすい解説とコードを
示して頂き、感謝です!

早速実装してみます。

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

返信