例えば月替わりランチメニューなど、月替わりのページを作成したいと思っています。
そのため、ページ切り替えスイッチも「次のエントリへ」「前のエントリへ」ではなく、
「12月のメニューへ」などのような形にしたいと思います。
そこで、
<xsl:value-of select="@month+1" />月のメニュー
のようにしてみましたが、データの部分は表示されず、「月のメニュー」となってしまいます。
これに限らず、ページ切り替えスイッチ中に含めたデータ項目は表示されないようですが、
ページ切り替えスイッチ中にはデータ項目は埋められないのでしょうか?
あるいは、前後のエントリのタイトルを取得し、
「12月のランチメニュー ○○定食へ」などといった風にもしたいのですが、
前後のエントリのデータを取得することは可能でしょうか?
ページ切り替えスイッチのカスタマイズについて
Re: ページ切り替えスイッチのカスタマイズについて
bcacsatoさん、いつもありがとうございます。
@monthは、本来は /entry/@month を省略したもので、
のように、entryが選択(select)された状態ですと、entryがカレント要素に
なる為、「@month」のように省略して書く事ができるようになっております。
この為、このfor-eachの外ですと、@monthと書いても /entry/@monthを
取得することができない、というのが今回の現象かと思います。
この場合は、
のように、ルートからのフルパスで指定して頂くと、取得可能です。
これはエントリ1件のデザインの場合で、エントリ一覧(entrylist)のデザイン
の場合には、entry要素が複数存在しますので上記の方法は使用できません。
エントリ一覧の場合に同様のことをしたい場合には、「1件目のエントリ」の
ようにエントリを選択し、次のように記述してください。
少々高度な利用方法になりますが、ご希望の内容のお役に立てれば幸いです。
回答がズレておりましたら、お手数ですが再度ご連絡をお願いいたします。m(__)m
@monthは、本来は /entry/@month を省略したもので、
コード: 全て選択
<xsl:for-each select="entry">
<xsl:value-of select="@month" />月
</xsl:for-each>
なる為、「@month」のように省略して書く事ができるようになっております。
この為、このfor-eachの外ですと、@monthと書いても /entry/@monthを
取得することができない、というのが今回の現象かと思います。
この場合は、
コード: 全て選択
<xsl:value-of select="/entry/@month" />
これはエントリ1件のデザインの場合で、エントリ一覧(entrylist)のデザイン
の場合には、entry要素が複数存在しますので上記の方法は使用できません。
エントリ一覧の場合に同様のことをしたい場合には、「1件目のエントリ」の
ようにエントリを選択し、次のように記述してください。
コード: 全て選択
<xsl:value-of select="/entrylist/entry[1]/@month" />
回答がズレておりましたら、お手数ですが再度ご連絡をお願いいたします。m(__)m
説明不足で失礼しました。
前後を省略してソースを載せてしまいましたが、
実際には下記の通り、for-eachの中に入れております。
今回は、エントリ一覧のデザインを使って、1ページに1エントリという形で使ってました。
そのため、webmaster様のご指示の通り、[1]を使って、
のようにやってみたところ、ちゃんと「12月」と表示されました!
が、12月のページに行くと、「11月」とは表示されず「月」となっています…。
「pageno=2」だから[2]にしなきゃないのかと思い、
のようにしてみましたが、変わらずです。
何か手順が間違ってますでしょうか?すいませんが、ご指示お願いいたしますm(_ _)m
前後を省略してソースを載せてしまいましたが、
実際には下記の通り、for-eachの中に入れております。
コード: 全て選択
<xsl:for-each select="navi">
<xsl:for-each select="prev"><a href="{@href}"><xsl:value-of select="@month-1" />月</a></xsl:for-each>
<xsl:for-each select="next"><a href="{@href}"><xsl:value-of select="@month+1" />月</a></xsl:for-each>
</xsl:for-each>
そのため、webmaster様のご指示の通り、[1]を使って、
コード: 全て選択
<xsl:for-each select="navi">
<xsl:for-each select="prev"><a href="{@href}"><xsl:value-of select="/entrylist/entry[1]/@month-1" />月</a></xsl:for-each>
<xsl:for-each select="next"><a href="{@href}"><xsl:value-of select="/entrylist/entry[1]/@month+1" />月</a></xsl:for-each>
</xsl:for-each>
が、12月のページに行くと、「11月」とは表示されず「月」となっています…。
「pageno=2」だから[2]にしなきゃないのかと思い、
コード: 全て選択
<xsl:for-each select="navi">
<xsl:for-each select="prev"><a href="{@href}"><xsl:value-of select="/entrylist/entry[2]/@month-1" />月</a></xsl:for-each>
<xsl:for-each select="next"><a href="{@href}"><xsl:value-of select="/entrylist/entry[1]/@month+1" />月</a></xsl:for-each>
</xsl:for-each>
何か手順が間違ってますでしょうか?すいませんが、ご指示お願いいたしますm(_ _)m
bcacsatoさん、やはり回答がズレていたようで申し訳ありません。
@month-1を、@month - 1 のように、-の両側にスペースを入れるとどうでしょう?
同様に、+の両側にもスペースを入れてみてください。
「month-1」という名前の属性を探しにいって、存在しない為空白になっている
可能性があるかと思います。
尚、デザイン定義には表示される件数分のデータしか与えられない為、1ページ1件
にしている場合には、entry[2]とやるとエントリが選択されません。常に[1]でOK
です。
ところで、1ページ1件でのページ切替をする場合は、ページ切替ではなく
「エントリ切替」の手法をご利用頂いた方がシンプルかもしれません。
詳しくはリファレンスマニュアル「5.5.9 「次のエントリへ」「前のエン
トリ」へのリンクをつける」をご覧下さい。
@month-1を、@month - 1 のように、-の両側にスペースを入れるとどうでしょう?
同様に、+の両側にもスペースを入れてみてください。
「month-1」という名前の属性を探しにいって、存在しない為空白になっている
可能性があるかと思います。
尚、デザイン定義には表示される件数分のデータしか与えられない為、1ページ1件
にしている場合には、entry[2]とやるとエントリが選択されません。常に[1]でOK
です。
ところで、1ページ1件でのページ切替をする場合は、ページ切替ではなく
「エントリ切替」の手法をご利用頂いた方がシンプルかもしれません。
詳しくはリファレンスマニュアル「5.5.9 「次のエントリへ」「前のエン
トリ」へのリンクをつける」をご覧下さい。
なるほど!空白を入れたら大丈夫でした
今回は1ページ内にコンテンツをもう1つ埋め込んでいるのですが、例えば、
のようにすると、なぜかページスイッチが表示されないのです。
しかし、
このようにすると、ページスイッチが現れるため、この方法をとりました。
それと、最初の質問の後半、

今回は1ページ内にコンテンツをもう1つ埋め込んでいるのですが、例えば、
コード: 全て選択
<cmsd:entry name="content" design="detail" />
<cmsd:entry name="sub-content" design="detail" />
しかし、
コード: 全て選択
<cmsd:entrylist name="content" design="list" rows="1" />
<cmsd:entry name="sub-content" design="detail" />
それと、最初の質問の後半、
も急ぎませんので、教えてくださいませm(_ _)mあるいは、前後のエントリのタイトルを取得し、
「12月のランチメニュー ○○定食へ」などといった風にもしたいのですが、
前後のエントリのデータを取得することは可能でしょうか?
webmasterです。bcacsatoさん、いつもありがとうございます。
マニュアルでは目立たないのですが、cmsd:entryタグでは、エントリ切替用
ナビゲーションを表示するために、
のように、navigation属性を指定する必要があります。
これは、一般的にエントリ切替ナビゲーションが表示されるケースは稀で、
エントリ切替ナビゲーションを表示する為には多少サーバに負荷がかかる為です。
(負荷といっても、エントリ一覧を表示するのと同程度の負荷です)
逆にエントリ一覧(cmsd:entrylist)では、ページ切替ナビゲーションの
表示を
で、消す事ができます。これによって多少負荷が軽減されます。
エントリ一覧の場合、多くのケースでページ切替ナビゲーションが表示される事が
予想される為、デフォルト値が「on」になっています。
申し訳ありません、このご質問への回答を失念しておりました。m(__)m
前後のエントリデータの取得は現在サポートしていない為、ご希望のことは
実現できないかと思います。重ねて申し訳ありません。
マニュアルでは目立たないのですが、cmsd:entryタグでは、エントリ切替用
ナビゲーションを表示するために、
コード: 全て選択
<cmsd:entry name="xxx" design="xxx" [color=red]navigation="on"[/color] />
これは、一般的にエントリ切替ナビゲーションが表示されるケースは稀で、
エントリ切替ナビゲーションを表示する為には多少サーバに負荷がかかる為です。
(負荷といっても、エントリ一覧を表示するのと同程度の負荷です)
逆にエントリ一覧(cmsd:entrylist)では、ページ切替ナビゲーションの
表示を
コード: 全て選択
<cmsd:entrylist name="xxx" design="xxx" navigation="off" />
エントリ一覧の場合、多くのケースでページ切替ナビゲーションが表示される事が
予想される為、デフォルト値が「on」になっています。
も急ぎませんので、教えてくださいませm(_ _)m[/quote]あるいは、前後のエントリのタイトルを取得し、
「12月のランチメニュー ○○定食へ」などといった風にもしたいのですが、
前後のエントリのデータを取得することは可能でしょうか?
申し訳ありません、このご質問への回答を失念しておりました。m(__)m
前後のエントリデータの取得は現在サポートしていない為、ご希望のことは
実現できないかと思います。重ねて申し訳ありません。