2006年05月27日

Seesaaブログで件数表示を伴うカテゴリ・過去ログ別記事一覧表示

私がブログを始めるに当たってSeesaaブログを選んだ一つの理由にHTMLやスタイルシートの直接編集ができることがありました。
これまでもここここなど他のサイトを参考にいくつかHTMLをいじってきました。

その中の1つにカテゴリページで記事一覧を表示するというものがあります。
カテゴリ別の記事タイトル一覧を示すことができて過去ログページにも簡単に応用可能な非常に便利なものだと思います。
以前はカテゴリ中の記事数が増えるとリストが冗長になってしまうということがありました。
記事タイトルの一部を表示したり2段組みにする対処方法もありましたが、このブログは記事タイトルが長いことが多いので気が引ける方法でした。

そんな中、先日Seesaaブログのカテゴリページと過去ログページにページング機能が追加されました
これによってカテゴリページと過去ログページに表示される記事数は最大で20件に制限されることになります。
すると今後は上述の記事一覧表示の仕方ではその時点で表示されている記事のみの一覧表示になります。
このままではその記事リストが以前そうであったようにそのカテゴリ・過去ログの全ての記事リストであるとも誤解されそうなので、検索エンジンの検索結果ページのように「○件中○-○件目の記事一覧です。」と表示したいと考えました。
このブログではカテゴリ・過去ログページともに記事表示数は現在20に設定していますが記事数が20を超えているページで上記のように表示させています。
それ以外のページでは件数表示はしないようにしました。


まずはカテゴリページにこの件数表示を伴う記事一覧表示をさせる方法を示します。

いじるのは「記事」コンテンツのHTML。
具体的には「マイ・ブログ」>「デザイン」>「コンテンツ」>「記事」>「コンテンツHTML編集」とたどっていきます。
ここが図付きでわかりやすいと思います。

「記事」コンテンツのHTMLの中で
<% if:page_name eq 'category' -%> 〜 <% /if -%>

の部分がカテゴリページで(のみ)表示される部分です。

記事一覧はナビとページングの下に表示したいので以下の部分にコードを追加します。
<% if:page_name eq 'category' -%>
ナビ部分
<% if:pager.need_pager -%>
ページング部分
<% /if -%>
この部分に追加
<% /if -%>


ちなみにこの部分の直後には
<% loop:list_article -%>
記事部分
<% /loop -%>

があるはずです。

加えたコードは以下の通りです。
<div id="clist">
<script langage="JavaScript">
<!--
<% if:pager.need_pager -%>
var start=1+<% blog.category_page_cnt %>*(<% current_page %>-1);
var end=<% if:pager.next_page %><% blog.category_page_cnt %>*<% current_page %><% else %><% category.article_count %><% /if %>;
document.write("「<% category.name %>」カテゴリの<% category.article_count %>件中",start,"-",end,"件の記事一覧です。");
<% else -%>
document.write("「<% category.name %>」カテゴリの記事一覧です。");
<% /if -%>
// -->
</script>
<ul>
<% loop:list_article -%>
<li><a href="<% article.page_url %>" class="a"><% article.subject %></a></li>
<% /loop -%>
</ul>
</div>


以下で簡単にコードの説明をします。
ページングが表示されるとき、つまり記事表示数以上に記事数があるときは記事表示数と何ページ目を表示しているかと全記事数から表示される記事の最初と最後の記事が何件目の記事かを計算して
「(カテゴリ名)カテゴリの○件中○-○件目の記事一覧です。」
と表示します。
記事数が設定表示数以下でページングが表示されないときは
「(カテゴリ名)カテゴリの記事一覧です。」
と表示します。
その下の記事リストは既に紹介したサイトのコードをそのまま利用させてもらっています。
ちなみに表示記事数の設定は「マイ・ブログ」>「設定」>「ブログ設定」でカテゴリ・過去ログページともに変更可能です。


それでは過去ログページでの設定方法も示しておきます。

カテゴリページと同じく「記事」コンテンツのHTMLの中で以下の部分にコードを追加します。
<% if:page_name eq 'archive' -%>
<% if:archive_page_name eq 'month' -%>
ナビ部分
<% /if %>
<% if:archive_page_name eq 'mday' %><% /if -%>
<% if:archive_page_name eq 'month' -%>
<% if:pager.need_pager -%>
ページング部分
<% /if -%>
この部分に追加
<% /if -%>
<% /if -%>

これはカテゴリページ部分の直前にあるはずです。
何も中身がない'mday'が何をする部分かわかりませんが'archive'内の'month'内部分が過去ログページの部分になっています。
(追記:サイドバーの「過去ログ」にリンクされている月別のアーカイブが'month'でカレンダーにリンクされている日別のアーカイブが'mday'だと思います。
ここで書いたことを応用すれば日別一覧などもできますね。)
カテゴリページのときと同様にページングの下に表示したいのでこの部分に追加します。

追加するのは以下のコードです。

<div id="clist">
<script langage="JavaScript">
<!--
<% if:pager.need_pager -%>
var start=1+<% blog.archives_page_cnt %>*(<% current_page %>-1);
var end=<% if:pager.next_page %><% blog.archives_page_cnt %>*<% current_page %><% else %><% archive.article_count %><% /if %>;
document.write("<% archive.createstamp | date_format("%Y年%m月") %>の<% archive.article_count %>件中",start,"-",end,"件の記事一覧です。");
<% else -%>
document.write("<% archive.createstamp | date_format("%Y年%m月") %>の記事一覧です。");
<% /if -%>
// -->
</script>
<ul>
<% loop:list_article -%>
<li><a href="<% article.page_url %>" class="a"><% article.subject %></a></li>
<% /loop -%>
</ul>
</div>


動作はカテゴリページと同様でページングが表示されるときは
「○年○月の○件中○-○件の記事一覧です。」
と表示してページングがないときは
「○年○月の記事一覧です。」
と表示します。


このブログではスタイルシートはいじっていませんが好みに応じて"clist"というこの記事リストのオリジナルのidをスタイルシートで設定すれば記事一覧のスタイルをカテゴリ・過去ログページで一括して変更可能です。



(追記)
スタイルシートも少しいじりました。
それと記事部分の下にもページングが表示されるのでコードはそちらと間違えないように注意が必要です。

(追々記)
現在、カテゴリページと過去ログページの記事表示数が最大300件になっているようです。
新たな発表が出ていないことからそれ以前にHTMLをいじっていない場合はもともと最大300件まで設定できていたのかもしれません。
しかし、このブログではSeesaaの機能追加の後にHTMLを一度デフォルトの状態にリセットしたのでいつの間にか最大20件から最大300件に変更されていた可能性もありそうです。
いずれにしても今後は記事表示数を多めに設定して全ての記事の一覧が表示されるようにしてもいいでしょうし、一覧のリストが長くなりすぎると思ったら少なめに設定するのもいいでしょう。
ここでは設定数を読み込んで表示を変えるようにしてあったので、この方法を試した方で記事表示数を多めに設定しなおす場合も特にコードをいじりなおす必要はないでしょう。
この記事へのコメント
参考にさせて頂きました☆
さっそく自分のブログでやったんですが、綺麗に記事が並びません(汗)

真ん中に集まってしまうんですよね。
こんな感じに↓

●押切もえ 浴衣をプロデュース
 ●結婚秒読み!?エビちゃん

ここのブログみたいに、綺麗にそろえて表示させるにはどうすればよろしいですか?

お手数ですが教えて頂けると、大変助かります。
Posted by 注目の芸能人と、その愛用コスメは?の管理人 at 2006年06月23日 01:55
この記事が参考になるものでよかったです。

どうやらあなたのサイトではリストが中央揃えになっているようですね。bodyタグのスタイルに中央揃えが設定されているのはこちらのサイトと一緒ですが、こちらのサイトのテンプレートではメイン部分のcontentというスタイルに左揃えが設定されているのでそちらが優先されてもともと左揃えになっていましたが、あなたのサイトの設定ではbodyタグ以下の要素のどこにも行揃えの設定がないのでそれが直接反映されているようです。
ちなみにcontentの範囲がどこかに興味がありましたら「ブログカスタマイズ」さんの
http://www.blogcustomize.com/customize_total_design.html
が参考になると思います。

お望みのようにするにはこの記事の冒頭でも紹介した「Seesaaデザインテンプレート」さんの記事
http://template.seesaa.net/article/2429125.html
の最後の方を参考にclistというIDに左揃えを設定して下さい。とりあえずは
#clist {
text-align:left;
}
とだけスタイルシートに書き加えればお望み通りになるはずです。この方法なら過去ログページにも記事リストを設定した場合でもここをいじるだけでフォントサイズや枠や項目間の間隔などを一括して設定できて便利です。この記事内ではっきりとは説明しませんでしたが加えるコード全体をclistというIDの属性を指定したdivタグで囲っているのはこの方法を前提にしてのことです。

もし左揃え以外にスタイルをいじる予定がなく過去ログページへのリストの導入の予定もなく、わざわざスタイルシートをいじりたくないのでしたら追加したコードの1行目のdivタグで指定している「id="clist"」という属性の部分をそっくりそのまま「style="text-align:left"」と置き換えるだけでもお望みのようになるはずです。

もしうまくいきませんでしたら、またご報告下さい。
Posted by gyro at 2006年06月23日 05:42
とても詳しく教えて頂き、感謝します。
見も知らずの自分の為に・・・ほんとにありがとうございます☆

おかげさまで、上手くできました!
これはかなり使える技ですよね。
今はまだ記事が少ないから良いですが、増えるとなにがなんだか・・・。

とても見やすくて、訪問者に優しい機能です☆
ホントにありがとうございます。

あ、自分と同じようにスタイルシートを弄りたい人用に、このブログを宣伝してもいいですか?

この技を知りたがっている人は多いと思うんで^^;
Posted by 注目の芸能人と、その愛用コスメは?の管理人 at 2006年06月24日 03:04
はい、宣伝していただいて構いませんよ。

ところで記事一覧がかなり左に寄ってしまったようですね。気になるようでしたらmarginやpaddingで調整できますよ。枠や背景がなければ同じ働きですが、marginは枠の外側のスペース、paddingは枠の内側のスペースです。
「Seesaaデザインテンプレート」さんの記事の通りでもいいでしょうし、「とほほのWWW入門」さんの
http://www.tohoho-web.com/css/reference.htm#margin
辺りを参考にするといろいろと好きなようにできると思います。

「Seesaaデザインテンプレート」さんの記事と「とほほのWWW入門」さんの
http://www.tohoho-web.com/css/index.htm
で使っているプロパティを照らし合わせて必要そうなのを書き加えるともっと見栄えがよくなると思います。ちなみに「#clist li」はclistというIDの中のliタグ(リスト)のみのスタイルの設定です。
Posted by gyro at 2006年06月24日 14:10
また詳しくアドバイスして頂き、ありがとうございます。

すみません。また一つ問題が・・・。

トップに表示する記事の数を10ほどにして、残りは、「次のページを見る」といった具合にしたいのです。

トップに表示する記事の制限はできるのですが、残りのブログを表示する「次のページを見る」といったことができません。

表示する記事を10としたなら、最新の記事が10表示されるだけで、残りの古いページにアクセスできるボタンがありません。

(1)今日の記事
------------
(2)昨日の記事
------------


(10)10日前の記事
--------------

次のページを見る

といったように、10日前より古いページを見る場合は、「次のページを見る」といった表示をさせたいのですが・・・。

質問ばかりで申し訳ないですが、もしやり方をご存知でしたら教えてください。

シーサーブログを利用しています。
Posted by 注目の芸能人と、その愛用コスメは?の管理人 at 2006年07月03日 17:31
いくつかのSeesaaのブログカスタマイズ系のサイトで見たことのある質問ですね。私の知る限りではそれらの質問に対して無理、もしくは通常の方法では無理との回答がされているようです。

Seesaaブログで記事を投稿して作成されるURLを持つページはトップページ、カテゴリページ、過去ログページ、そして記事ページのはずです。前3者で表示される記事群は全てloop:list_articleの中のコードで記述されています。それぞれのページで設定されている記事表示数などに応じてloop:list_articleで条件に合致する全ての記事がSeesaa側から取得されて表示されます。カテゴリ・過去ログページの2ページ目以降はSeesaaでURLが与えられたページとして存在しますし、そこでの前後のページや各記事の前後の記事へのリンクはSeesaaで取得する変数が用意されているため可能なものです。

ゆえに問題は望まれるような記事を表示するURLが与えられたページがSeesaaで用意されていなく、そのような記事を取得する関数や記事を表す変数も用意されていないことです。仮に取得できるなら「次のページ」のリンク先をどのURLを持つページにするかということも考えどころです。

こう考えてみると確かにSeesaa側にそのような機能を設置してもらうのが一番なわけですが、"通常の方法では"無理とされているように(実現できるかわかりませんが)いろいろと可能性は追究できます。

まずトップページからJavascriptなどで記事を抽出して表示する方法。現状では記事コンテンツに表示可能な記事数が最大20件です。これを20件に設定してloop:list_articleで取得された20件のうちから例えば10件ずつを表示させることは可能なはずです。「次のページ」は通常のリンクではなくJavascriptのボタンになります。このボタンで表示する記事を切り替える関数を実行するようにすればいいでしょう。しかし、20件目までしか辿れないのでは使えない機能ですよね。

最後まで辿れるようにするにはトップページで過去ログページから抽出してくるしかなさそうです。トップページからでも過去ログページのURLや各月の記事数は取得可能ですのでそこから計算してしかるべき月のページから必要な数だけ抽出はできるかもしれません。最大の障壁は他のページからHTMLの内容を取得することです。
http://www.openspc2.org/JavaScript/Ajax/Page/index.html
を理解すれば可能なのかもしれませんが手間のかかる作業にはなりそうです。需要もありそうですし興味はあるのでもう少し調べてみます。せっかく「ブログカスタマイズ」というカテゴリ(現状は記事1件)を作りましたし。可能だとしてもコメント欄で済む内容ではないので成功したらエントリーを上げます。
Posted by gyro at 2006年07月04日 05:55
はじめまして。
記事を参考にして、私のサイトに一覧表示を設置できました。ありがとうございました。
Posted by よしらいき at 2007年01月31日 05:52
はじめまして、こんにちは。

大変有益な情報、どうもありがとうございました。
こちらの記事を参考にカテゴリ・過去ログの一覧化にトライしてみました。

ただ、カテゴリはうまく一覧化できたのですが、過去ログの方は、サイド
バーの月をクリックした時は一覧化されません。
ページングのページやその上に表示される月をクリックした時は、うまく
一覧化されます。

大変恐縮ですが、何かアドバイスをいただけたら幸いです。
どうぞよろしくお願いいたします。m(_ _)m
Posted by 自由人 at 2007年03月21日 23:35
サイドバーにリンクされたURL(/archives/200703.html)とページングやナビ部分にリンクされたURL(/archives/200703-1.html)の違いのせいかとも思いましたが、サイドバーにリンクされたURLでもリストがちゃんとできているページもあるようですので、うまく再構築されていない可能性が高いと思われます。
もし再構築しなおしても解決しませんでしたらもう一度お知らせ下さい。
Posted by gyro at 2007年03月22日 04:46
どうもありがとうございます。m(_ _)m

私も最初にURLの違いを疑ったのですが、どうやらそうではなさそうですね。
再構築も実施してみましたが、駄目でした。
seesaa側のバグなのでしょうか。。
Posted by 自由人 at 2007年03月22日 19:55
"-1"がつくURLとつかないURLで記述を変える変数もないと思うので何らかのバグは関係していそうですね。サイドバーのリンクURLに"-1"をつけてしまうという最終手段もありますが、デフォルトを変えるのはやや気持ち悪いですよね。

今見たところ、サイドバーにリンクされた方の3つの月のみがリストが表示されていないようですね。最初に見たときのことはよく覚えていませんが、だんだん反映されていると言うことはないでしょうか?
http://blog-faq.seesaa.net/article/2105115.html
のような事例もありますし。
あるいはサイドバーのコンテンツの順番を一時的に変えて再構築などしたら、それをきっかけに反映されるのではなどとも思いますがいかがでしょうか。
Posted by gyro at 2007年03月23日 18:10
カテゴリページに記事一覧
を使わせていただきました。
ありがとうございます。

現在改造中なのですが、できれば記事リストだけを表示して、記事本体を非表示にしたいのですが、可能でしょうか。

タイトルを「記事」とした自由形式のコンテンツをヘッダーに追加して、表示する記事数を0にしてみたり、記事のコンテンツHTML編集で
<% loop:list_article -%>を消してみたりしましたが、無駄な試みでした。

お忙しいところ恐縮ですが、アドバイスをいただけますでしょうか。
よろしくお願いいたします。
Posted by 八 識 at 2007年03月24日 17:13
タイトルを「記事」とした自由形式のコンテンツをヘッダーに追加して…の部分が理解しきれませんが、記事リスト自体が<% loop:list_article -%>〜<% /loop -%>を利用しているので表示記事数をゼロにすると記事リストが表示されなくなるでしょうね。

<div class="blog">〜</div>で囲まれた記事本体部分で使われている<% loop:list_article -%>〜<% /loop -%>はカテゴリページだけでなく、トップページ、過去ログページ、記事ページそれぞれに応じて記事を取得する関数なのでこれを消すと肝心の記事ページからも記事が消えてしまうはずです。

この部分(<% loop:list_article -%><div class="blog">〜</div><% /loop -%>)をカテゴリページだけ非表示にするには<% unless:page_name eq 'category' -%>〜<% /unless -%>で囲えばいいのではと思われます。
http://blog-faq.seesaa.net/article/2412276.html
もし過去ログページも非表示にする場合は入れ子にしてもうひとつunlessで囲えばいいと思われます。
Posted by gyro at 2007年03月25日 08:31
こんなに早くお返事頂けて感激しています。

うまく非表示にできました。
参照リンク先を書いてくださったり、過去ログページまでご配慮くださってありがとうございました。

感謝、感謝です。!!
Posted by 八 識 at 2007年03月25日 18:03
アドバイスどうもありがとうございます。m(_ _)m

何度も何度も再構築していたら、一時的にデグレもありましたが、
徐々に反映されてきました。
25日の夜時点では、全て反映された状態です。

何度もご丁寧にありがとうございました。
助かりました!
Posted by 自由人 at 2007年03月26日 09:14
カテゴリー 過去ログ表示変更出来ました!!
ありがとうございます!!
でも 日付が 表示できませんでした.....
seesaaの設定なんでしょうか?どこも見ても 発見できませんでした。
もしよろしければ アドバイスいただけないでしょうか?
Posted by にゃんこちゃん at 2009年01月21日 14:06
はじめまして。記事、すごく参考になりました。ありがとうございます。
カテゴリ記事一覧が中央揃えになってしまうのがどうしても気になってたんですが、直すことができました!ほかにもカスタマイズしたい箇所が色々とありますのでまた参考にさせていただきます。
Posted by ドラクエ娘 at 2009年11月15日 00:21
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/18461554

この記事へのトラックバック

記事一覧の表示
Excerpt: このブログで、「カテゴリ」と「月別ログ」のページのヘッダーに 「記事一覧」を表示させるようにしました。 ↓の2つのブログを参考にさせていただきました。 ・「Seesaaデザインテンプレート」さんの記..
Weblog: 極楽スキーヤーの屋根裏部屋
Tracked: 2006-06-11 00:42

カテゴリ(過去ログ)記事一覧表示
Excerpt: 前々からこの機能を付けたいなぁ・・・と思っていましたが、勢いでやってしまいました。 と言っても、いつものように先駆者さんの真似なんですけどね。(^_^;) カテゴリ一覧 カテゴリ(Category..
Weblog: じゅるいなぁ・・・
Tracked: 2006-07-05 21:40

カテゴリ記事一覧と過去ログ記事一覧を表示件数(ページング)対応にする
Excerpt: 2006年5月12日から、Seesaaブログに、 「カテゴリ」「過去ログ」ページにページング機能が追加されました。 私の場合、カテゴリページと過去ログページに、 そのページの記事の一覧を表示するよう..
Weblog: んー?( ̄ー ̄;)
Tracked: 2006-07-28 17:43

カテゴリ・過去ログで記事一覧表示
Excerpt: 徒然なるままに様の記事と[Seesaa デザインテンプレート]様の記事を参考に、カテゴリ表示 及び 過去ログ表示をした時に、記事一覧を表示する事ができました。 ありがとうございました。
Weblog: 大ちゃんの、ブログで稼げるか
Tracked: 2006-08-16 22:02

Seesaaでカスタマイズ、一覧表示できた!
Excerpt: Seesaaブログでカスタマイズして、過去ログとカテゴリの一覧表示をつくることができました。 とてもわかりやすいカテゴリの一覧表示(インデックス)をお気楽に真剣に--目指すは自立主婦!でおこなってい..
Weblog: ポイント獲得への道
Tracked: 2007-01-31 05:37

HTMLとCSS修正でちょっと機能を追加♪
Excerpt: 今日がブログ開設一周年となりましたが、昨日からもくもくとやっていたのが、ちょっとしたHTMLとCSSの修正です&amp;#63903; 参考サイトさんに詳しく書いてあるから、適切な場所にコピペしてC..
Weblog: マキノハラENJOYブログ(*´▽)_旦~~
Tracked: 2007-03-04 14:40

Seesaaブログのカテゴリと過去記事の一覧ページを見やすくする
Excerpt: 私のブログは1エントリーが長いので、カテゴリや過去記事の一覧ページをタイトルだけの目次として使えるようにカスタマイズした。前からやりたかったのだがお待たせしました。右サイドバーのカテゴリリンクや過去の..
Weblog: 本質思考道場
Tracked: 2008-04-14 01:22

ブログのカテゴリー 過去ログ表示変更!!
Excerpt: seesaaブログの カテゴリー、過去ログ表示を変更しました。 いろいろな ブログを参考にして 最終的に 徒然なるままに: Seesaaブログで件数表示を伴うカテゴリ・過去ログ別記事一覧表示 を 参..
Weblog: 雑談など日記
Tracked: 2009-01-21 14:02

記事一覧を付けました
Excerpt: 記事が増えてくると記事一覧が欲しくなってきました。直近の記事は「最近の記事」で見られますが、それ以前のは過去ログ表示させていちいちスクロールしてタイトルを探すというめんどくさい状態でした。index...
Weblog: レピ屋見習いの雑記帳
Tracked: 2009-08-21 23:37

seesaaブログでカテゴリ・過去記事ページの上部に記事一覧を表示させるカスタマイズ
Excerpt: 前から気になってたこと。 ブログのテンプレートってなにもいじらないままだと、意外と使いづらいですよね^^; 特に何か目的があってブログを読んでいる時、 もっと他の情報が欲しいと思っている時 デフォル..
Weblog: WEBサイトを作り始めたひとの覚書
Tracked: 2009-11-28 01:58