listのn番目にタグ

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
KAIRI

listのn番目にタグ

投稿記事 by KAIRI » 2005年12月06日(火) 10:17

こんにちは。
以前、サムネイルの下に元の大きさの画像を表示させたい。
と質問しましたKAIRIです。
その後、特に不具合もなく動作しております。
その節は本当にありがとうございました。

使用している間にまたご質問させて頂きたい事が出来ましたので、
書き込みさせていただきました。
もしかしたら、またCMSDでは出来ないことかもしれないのですが…

件名にありますように、listのn番目に改行タグを挿入したいと思っております。
具体的に申し上げますと、
以前教えていただきました時に使用しておりました、
サムネイルを一段に6枚表示させ、それ以上の枚数になった場合(7〜12枚目)は
次の段に6枚といった風にしたいのですができますでしょうか?

欲を申しますと、次ページとナビゲーションを表示し7〜12枚目を次のページにと
思っているのですが、それは無理なのではないかと素人ながらおもいましたので、
今回ご質問させていただきました方法をとろうかと思っております。

list項目は使用するケースは稀とマニュアルにあったので開発に際して、
あまり視野に入っていないのかもしれませんが、私としては非常に使用頻度が多く
list項目を少々視野に入れていただければと思っております。


度重なる質問申し訳ありません。
私としては探し求めていたCMSに出会え、何とか自分の物にしたいと思っております
ので、お力添えよろしくお願いいたします。

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

Re: listのn番目にタグ

投稿記事 by webmaster » 2005年12月06日(火) 11:50

 webmasterです。KAIRIさん、こんにちは。 :D
 いつもお世話になっております。

 今回の件ですが、list項目の表示にて「n番目毎に改行タグ」を出力したい場合には、
「現在位置がnで割り切れる場合のみ改行タグを出力する」という考え方でいける
かと思います。

 「現在位置」は、position()というXSLTの命令で取得できます。
 例えば、

コード: 全て選択

<xsl:for-each select="繰り返し項目データ名/listitem">
  <xsl:value-of select="position()" />番目
</xsl:for-each>
 と書くと、リスト項目の「出力順番」が「1番目」「2番目」「3番目」・・・と表示されます。

 また、割り算の余りを計算するには「mod」を使います。
 10 mod 3 は、1になります。
 「現在位置が6で割り切れる」を表す式は、

コード: 全て選択

(position() mod 6)=0
 になります。

 これらを組み合わせて、

コード: 全て選択

<xsl:for-each select="繰り返し項目データ名/listitem">
  <xsl:if test="(position() mod 6)=0"><br /></xsl:if>
</xsl:for-each>
 のように書くことで、「6個目毎に改行タグを出力」させることができます。

 見てお分かりのように、かなりプログラマー的な考え方が必要になってしまいます
ので、分かる範囲でコピー&ペーストしてお使い頂ければと思います。m(_ _)m
KAIRI さんが書きました: 欲を申しますと、次ページとナビゲーションを表示し7〜12枚目を次のページにと
思っているのですが、それは無理なのではないかと素人ながらおもいましたので、
今回ご質問させていただきました方法をとろうかと思っております。
 申し訳ありません、ご指摘の通り、リスト項目においてそのようなナビゲーションは
javascriptを使わないと難しいかと思います。m(_ _;)m
KAIRI さんが書きました: list項目は使用するケースは稀とマニュアルにあったので開発に際して、
あまり視野に入っていないのかもしれませんが、私としては非常に使用頻度が多く
list項目を少々視野に入れていただければと思っております。
 ありがとうございます。
 list項目は、おそらくデータを3階層ぐらいで管理したい場合に、「ミニエントリ」としても
使うことができる為、いろいろと重宝するのだと思います。
 しかし、実際にはエントリ一覧とは違う為、いろいろ制限があって困ることも多い
のだと認識しております。

 いろいろと考えていることはあるのですが、今ひとつ、「シンプルさを保ったまま、
汎用性を上げる」ことができず、現在はご迷惑をおかけしております。m(_ _)m

 リスト項目に対して表示上の何らかの操作ができる機能については、一つ、非常に
強力な機能追加を予定しておりますので、ご期待ください。
 (ただ、その機能は多分にプログラマー向けとなりますが・・。(-_-;)

 またご報告させて頂きます。
最後に編集したユーザー webmaster on 2005年12月06日(火) 18:13 [ 編集 1 回目 ]

KAIRI

投稿記事 by KAIRI » 2005年12月06日(火) 17:53

度々の質問本当に申し訳ありません。
何となくではありますが、ご説明いただいた意味は理解できました。
本当にありがとございます。
思い描いていたサイトにどんどん近づいていっております。
完成にはまだ少し時間が掛かりそうですが、本日XMLの参考書を購入いたしましたので、がんばってCMSDでサイトを作り上げたいと思います。
リスト項目に対して表示上の何らかの操作ができる機能については、一つ、非常に
強力な機能追加を予定しておりますので、ご期待ください。
強力な機能とはっ?
リストを多様に使う者としては期待しております。(^-^)


後、重箱の隅をつつくようで申し訳ないのですが、後にこのログをご覧になられた方の為に誤りを訂正しておきます。

コード: 全て選択

<xsl:for-each select="繰り返し項目データ名/listitem"> 
  <xsl:value-of selecgt="position()" />番目 
</xsl:for-each>
訂正後

コード: 全て選択

<xsl:for-each select="繰り返し項目データ名/listitem"> 
  <xsl:value-of select="position()" />番目 
</xsl:for-each>

コード: 全て選択

<xsl:for-each select="繰り返し項目データ名/listitem"> 
  <xsl:if test="position() mod 6)=0"><br /></xsl:if> 
</xsl:for-each>
訂正後

コード: 全て選択

<xsl:for-each select="繰り返し項目データ名/listitem"> 
  <xsl:if test="(position() mod 6)=0"><br /></xsl:if> 
</xsl:for-each>

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

投稿記事 by webmaster » 2005年12月06日(火) 18:48

 webmasterです。
 KAIRIさん、訂正ありがとうございます。m(_ _;)m

 混乱を防ぐ為に、元記事の方も修正させて頂きました。

返信