リストのページ切り替えナビゲーションと詳細記事が連動しないのですが…

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
abirunekoneko
記事: 4
登録日時: 2009年1月31日(土) 22:40
お住まい: 東京都

リストのページ切り替えナビゲーションと詳細記事が連動しないのですが…

投稿記事 by abirunekoneko » 2009年2月01日(日) 00:29

はじめて投稿します。
すごく初歩的なところで、つまづいていると思うのですが、
お恥ずかしながらご教授ください。

同一ページ上にて、左側に「最新の20件」のタイトルを表示、
右側に「詳細記事」を表示 という単純な日記サイトを作りました。

「詳細記事」の方にも 前の日記へ|次の日記へ というナビをつけています。

エントリ数が20件以上になったので、普通にタイトルの方に
切り替えナビゲーションが出るようになりました。
ところが、「最新の20件」のはずなのに、トップには19件しかタイトルが表示されません。

また、タイトルリストのナビゲーション「前の20件へ」を押すと、
残りのタイトルリストへと、ちゃんと切り替わるものの、
それに対応しているハズの「詳細記事」がまったく別のIDのものになってしまいます。

(1ページ目は正しく表示されます)
「最新のタイトル ID=00022」「詳細の記事 ID=00022」

(2ページ目に切り替えると何故か下記のようになります)
「タイトル ID=00002」「詳細記事 ID=00012」

タイトルのデザイン定義には、<xsl:if test="@current">で表示を変えるようにしているので、「タイトル ID=00002」は、「現在表示されている記事なら」のデザインが効いています。
でも実際に表示される2ページ目の詳細記事は、最新の記事のまま反応しない訳でもないし、 ID=00002の記事でもありません。

マニュアル通りに、 navigation="on" interlock="yes" と入れているのですが…。

何故でしょうか?

実行時ソート というのは使ってはいないのですが、
記事を何件か、日付の修正編集をしたので、投稿記事の表示順番がID番号通りではなくなっています。
(現在のエントリ数は全部で29件で、最新の日記のIDが00022になっているのは、修正した事でID00023〜00029が過去の方に移動した為です。
また、一件だけ、タイトル一覧には表示しないようにグループ分けしている記事が一件あります。)
最新の20件なのに、19件しか表示されないのは、その一件だけ表示しないようにしているせいかなぁ?とも思います。

そういった事が原因なのでしょうか?

または、詳細記事のナビゲーションと、リストのナビゲーションを同一ページ上では使ってはいけなかった…? のでしょうか……

どこをどう直していいのやら…こんがらがってしまって、悩んでいます。

abirunekoneko
記事: 4
登録日時: 2009年1月31日(土) 22:40
お住まい: 東京都

もう一度見直してみました。

投稿記事 by abirunekoneko » 2009年2月02日(月) 04:05

2ページ目の詳細記事が、何故中途半端な「ID=00012」になるのか?、何か原因があるはずだと思うので、もう一度各ファイルをよく見直してみました。

コード: 全て選択

<!-- 左サイド 最近の20件(リスト表示) -->
<div id="left">
	<h2>最近の日記 (最新の20件)</h2>
	<ul>
	<cmsd:entrylist name="nikki01" design="mokuji" rows="20" navigation="on" interlock="yes" />
	</ul>
</div>
<!-- 右サイド(本コンテンツ) -->
<div id="right">
	<cmsd:entry name="nikki01" design="default" navigation="on" interlock="yes" /><br />	
	<div class="back"><a href="#pagetop" title="文頭に戻る">▲TOP</a>   <a href="index.php" target="_top" title="HOMEへ">HOME</a></div><br />
</div>
(1ページ目に表示されるタイトル一覧と表示される詳細記事)
タイトルID00022=表示されている詳細記事は、ID00022
タイトルID00021
タイトルID00020
タイトルID00019
タイトルID00018
タイトルID00017
タイトルID00015 (ID00016は一覧には出ないような設定にしています)
タイトルID00014
タイトルID00013
タイトルID00012
タイトルID00011
タイトルID00010
タイトルID00009
タイトルID00008
タイトルID00007
タイトルID00006
タイトルID00005
タイトルID00004
タイトルID00003
  以上19件のタイトル(ID00016と合わせると20件になります)

(2ページ目に表示される残りのタイトル一覧と詳細記事)
タイトルID00002=表示されている詳細記事は、ID00012
タイトルID00029
タイトルID00028
タイトルID00027
タイトルID00026
タイトルID00025
タイトルID00024
タイトルID00023
タイトルID00001


このID00012なのですが、
このphpファイルには、もうひとつ出力項目を設けていて、下記のようなパンくずリスト
(該当するカテゴリー名を表示。クリックしたら別ページ→そのカテゴリのタイトル一覧全部を出すページへとジャンプするデザイン)
を設定しています。

コード: 全て選択

<!-- タイトル(ヘッダ)、パンくずリスト -->
<div id="top">
<a name="pagetop"><img src="img/title.jpg" /></a><a href="index.php" target="_top" title="HOMEへ" class="home">HOME</a>
<cmsd:entrylist name="nikki01" design="pankuzu" pegeno="top">
	<cmsd:group key="cate" />
	<cmsd:group key="cate2" />
	<cmsd:group key="cate3" />
           :
</cmsd:entrylist>
</div>
1ページ目のタイトルをクリックすると、このパンくずリストが
ID00022〜ID00013までは正常に表示されるのに
ID00012以降〜ID00001が効いてない…、ということに(今日やっと)気がつきました。
このあたりに原因がありそうです。
pegeno="top" というのがいけないような気がしてきました…。
もう一度修正してみます。原因がわかりましたらご報告します。
長々とすみません。

abirunekoneko
記事: 4
登録日時: 2009年1月31日(土) 22:40
お住まい: 東京都

パンくずリストは直りましたが、詳細記事の連動は変化せず

投稿記事 by abirunekoneko » 2009年2月02日(月) 04:54

引き続き自己レスです。
<!-- タイトル(ヘッダ)、パンくずリスト -->
<cmsd:entrylist name="nikki01" design="pankuzu" pegeno="top">

<cmsd:entrylist name="nikki01" design="pankuzu" rows="9999">
と、直してみました。

全ての詳細記事に合致して、記事に合ったカテゴリ名が表示されるようになりました。
……(何やら勘違いをしていたようです)

でも、やっぱり2ページ目の詳細記事は、ID00012とズレたままです。
この部分だけ、パンくずリストも表示されません。

どうも、20件表示は効いてるものの、ページ切り替えの際に、詳細記事だけが
10件ごとの切り替えになっているような気がします…。

もう少し見直してみます。

abirunekoneko
記事: 4
登録日時: 2009年1月31日(土) 22:40
お住まい: 東京都

その後のご報告です。

投稿記事 by abirunekoneko » 2009年2月05日(木) 14:39

引き続き自己レスです。(何度もすみません)
あれから、何かを変えると表示も何か変化するかも? と、いろいろやってみました。

リファレンスマニュアルを読み返してみたところ、
詳細記事にナビゲーションをつけるには
<cmsd:entry name="nikki01" design="default" navigation="on" interlock="yes" />
のように navigation="on" を入れる、と書いてありますが、
リストのナビゲーションの場合には特に入れるようには書いてなかったのですね…。
(これも勘違いしていました)

なので、リストの方にも入れていた navigation="on" を取ってみました。
<cmsd:entrylist name="nikki01" design="mokuji" rows="20" interlock="yes" />
    ↓
特に変化なし でした。

ううむ、ならば20件表示はやめてディフォルトの10件表示にしてみよう! と
<cmsd:entrylist name="nikki01" design="mokuji" rows="10" interlock="yes" />
<cmsd:entrylist name="nikki01" design="mokuji" interlock="yes" />
省略形でもやってみました。)
    ↓
ちゃんと10件ずつ表示されるようにはなりましたが、やはりタイトルと記事がズレます。
ここで偶然にも「隠していたタイトルID00016」の詳細記事が
切り替えた際に、たまたまページトップとして右側に表示されてしまい、
あれ!? っと思いました。

(※ID00016は、「最新のxx件表示」の「タイトル」には表示しないようグループ分けしていただけで、
詳細記事まで見えないようにしていたわけではありません。)

なんでこんな事をややこしい事をしたかと言いますと、
「ID00016」の記事の中身は「profile」でして、
通常の日記のタイトルの途中にポコっと「profile」が並んじゃうのは、なんか嫌だなぁ…と
別に<a href="">「profile」</a>という目次項目を設けて、そこをクリックした時にだけ表示させるようにしたかったのです。

で、問題のズレなのですが、この「隠してる」のがいけないのかと思い、
タイトルデザイン定義の<xsl:if test="カテゴリーがxxなら〜"></xsl:if>をはずして、全て表示に直してみました。
    ↓
ちゃんと10件ずつ表示されるようになりました。
タイトルと詳細記事も、ページを切り換えた時にちゃんと合うようになりました。

これが変な挙動をさせていた原因だったのかと、納得し、
ならば、最新リストの数をもう一度20件表示に戻してみよう と試してみました。
   ↓
またしても、ズレます……(最初の時のように戻ってしまいました)
(ズレた記事はやっぱり「パンくず」も表示されません)
(隠していたのを外したので、タイトルの数は19件ではなく、ちゃんと20件表示されるようにはなりました)

せっかく解決したかと思ったのですが……。

やっぱり、リストと詳細記事が同一ページの場合、リストのナビゲーション表示数は10件じゃないといけない、という事なんでしょうかね。
いまいち腑に落ちないのですが、とりあえず10件表示だと正しく連動するようなので
これでいこうかと思います。

隠したかったID00016のタイトルですが、
更新日をムリヤリ過去の日付にして保存する事で、一番古いエントリとして並ぶよう
強制移動する事で解決としました。

長々とすみませんでした。
(解決してないけど)とりあえず解決させましたという事で。
お騒がせいたしました。

返信