Paroday

Paroday:ニュースやアニメのレビュー、FC2ブログのテンプレート・プラグインなどを配信しています。

もしかして Parody ではありませんか? yes

[C]月日別ページで1ページに30件以上の記事を表示する(日付単位)

 正確には、最大で30日分の記事を1ページにすべて表示することができます。


[環境設定][ブログの設定][拡張表示設定]にある表示単位を日付単位に変更します。

1ページ内の表示を『日付単位』でまとめる

 <!--same_day--> 変数のあるなしにかかわらず日付単位は機能します。したがって、月日別ページでの30件以上の記事表示はすべてのテンプレートで可能です。

日付単位を利用するときの注意事項

 以下の点を踏まえた上で『日付単位』を利用するかしないかを判断します。

  1. トップページからの送りページ(/page-no.html)で表示される1ページの記事件数が不定になる。
  2. 1日にたくさんの記事を投稿していると1ページの表示が重くなる(タイトル一覧表示などで対応)
  3. 変数 <%total_pages> を使用しているテンプレートでは誤表記や誤作動を起こす可能性がある。

 よくわからないときは、実際に『記事単位』に設定して、以下のページを確認します。

  • トップページからのページ送り(/page-1.htmlなど)
  • 月別ページ(/blog-date-201003.htmlなど)
  • カテゴリページ(/blog-category-0.htmlなど)

 「次のページ」「前のページ」などのページ送りもそれぞれ確認します。

説明

 通常、表示単位の『日付単位』は次の目的で使われます。

 次の記事と日付が同じ場合は <!--same_day--> で囲まれたブロックを出力しない。

<!--same_day-->
<%topentry_year>年 <%topentry_month>月<%topentry_day>日
<!--/same_day-->

(例)1月の記事が「1月1日タイトルA」「1月1日タイトルB」「1月2日タイトルC」の3件だったとします。

// 出力結果
2010年1月1日
記事タイトルA
記事本文

記事タイトルB
記事本文

2010年1月2日
記事タイトルC
記事本文

 記事単位と日付単位の違いはこれだけと思われがちですが、他にも異なる点があります。

 その一つがトップページからの送りページ(/page-no.html)と月日別ページ(/blog-date-ymd.html)における表示件数の数え方です。

1月の記事が「1月1日」「1月1日」「1月2日」の3件だったときの表示件数のカウントは次のようになります。

記事単位(全ページ) → 3件
日付単位(カテゴリ、タグ、検索ページ) → 3件
日付単位(トップページからの送りページ) → 2件
日付単位(月日ページ) → 2

 トップページからの送りページと月日ページでは同日の記事を1件の表示としてカウントします。これはあくまでも[環境設定][ブログの設定][記事の設定]における表示件数のカウントであって、 <!--topentry--> の出力は記事件数分繰り返します。

 つまり、[記事の設定]の記事(月別)表示件数を最大の30に設定すると、30日分の記事が指定件数を超えて、50件でも100件でも表示されます。

■4月の記事(50件)→50件すべて表示

4月1日
4月2日
4月3日
(中略)
4月30日

 ここで問題になるのは、ひと月が31日ある「1月、3月、5月、7月、8月、10月、12月」です。

■1月の記事(日に1記事以上)→30日までの記事をすべて表示

1月1日
1月2日
1月3日
(中略)
1月30日(1ページの表示限界)
1月31日(2ページ目に表示)

 31日ある月は1日だけブログを休みましょう。

記事(ページ別)表示件数について

 日付単位にするとトップページからの送りページ(/page-no.html)で表示される1ページの件数がバラバラになります。

記事が以下の 10件 だったとします。

1月1日
1月1日
1月2日
1月3日
1月4日
1月4日
1月4日
1月5日
1月6日
1月7日

記事(ページ別)表示件数を 3件 にします。ここでは(page-0.html)を1ページ目とします。

1ページ目(page-0)→4件表示
1日の記事
1日の記事※同日のためカウントしない
2日の記事
3日の記事
2ページ目(page-1)→5件表示
4日の記事
4日の記事※
4日の記事※
5日の記事
6日の記事
3ページ目(page-2)→1件表示
7日の記事

 1日から3日にかけて30件ずつ投稿すると、1ページに90件表示されます。1日にたくさんの記事を投稿すると1ページの表示が重くなるため、タイトルや冒頭文のみを一覧で表示するとよいかもしれません。

日付単位における <%total_pages> 変数について

 次のページでは <%total_pages> は正しく機能します。

  • カテゴリページ
  • 検索ページ
  • タグページ

 しかし、以下のページでは正しく機能しません。

  • トップページからの送りページ
  • 月日別ページ

 したがって、<%total_pages> を使用しているテンプレートで記事単位を利用すると、誤表記や誤作動を起こす可能性があります。

 例えば、全部で15件の記事(同月)があったとします。そして、記事(ページ別)と記事(月別)の表示件数を3件とします。
 そうすると <%total_pages> はそれぞれ5ページになるはずです。

 しかし、この二つのページでは <%total_pages> は次のページまでの合計ページ数になります。

(例)4月の記事(1日から15日までに1件ずつ合計15件の記事がある)

ここでは(page-0.html)を1ページ目とします。

1ページ目(page-0)
<%total_pages> は次のページ(page-1)までの合計ページ数→ 2を出力
1日の記事
2日の記事
3日の記事
2ページ目(page-1)
<%total_pages> は次のページ(page-2)までの合計ページ数→ 3
4日の記事
5日の記事
6日の記事
3ページ目(page-2)
<%total_pages> は次のページ(page-3)までの合計ページ数→ 4
7日の記事
8日の記事
9日の記事
4ページ目(page-3)
<%total_pages> は次のページ(page-4)までの合計ページ数→ 5
10日の記事
11日の記事
12日の記事
5ページ目(page-4)
<%total_pages> は次のページがないのでここまでの合計ページ数→ 5
13日の記事
14日の記事
15日の記事

備考

 iframe要素を使うと、記事単位でも30件以上の表示はできますが面倒です。限定されますが、AutoPagerizeを導入するのも一つの方法です。

関連記事
  1. comment

コメント

Icon ※必須 :
Pass  ※入力した英数字を識別コードとしてNoに表示(123→LkZag.iM)

トラックバック

http://paro2day.blog122.fc2.com/tb.php/536-94a6efd7

  1. trackback