これまでもここやここなど他のサイトを参考にいくつか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件に変更されていた可能性もありそうです。
いずれにしても今後は記事表示数を多めに設定して全ての記事の一覧が表示されるようにしてもいいでしょうし、一覧のリストが長くなりすぎると思ったら少なめに設定するのもいいでしょう。
ここでは設定数を読み込んで表示を変えるようにしてあったので、この方法を試した方で記事表示数を多めに設定しなおす場合も特にコードをいじりなおす必要はないでしょう。
さっそく自分のブログでやったんですが、綺麗に記事が並びません(汗)
真ん中に集まってしまうんですよね。
こんな感じに↓
●押切もえ 浴衣をプロデュース
●結婚秒読み!?エビちゃん
ここのブログみたいに、綺麗にそろえて表示させるにはどうすればよろしいですか?
お手数ですが教えて頂けると、大変助かります。
どうやらあなたのサイトではリストが中央揃えになっているようですね。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"」と置き換えるだけでもお望みのようになるはずです。
もしうまくいきませんでしたら、またご報告下さい。
見も知らずの自分の為に・・・ほんとにありがとうございます☆
おかげさまで、上手くできました!
これはかなり使える技ですよね。
今はまだ記事が少ないから良いですが、増えるとなにがなんだか・・・。
とても見やすくて、訪問者に優しい機能です☆
ホントにありがとうございます。
あ、自分と同じようにスタイルシートを弄りたい人用に、このブログを宣伝してもいいですか?
この技を知りたがっている人は多いと思うんで^^;
ところで記事一覧がかなり左に寄ってしまったようですね。気になるようでしたら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タグ(リスト)のみのスタイルの設定です。
すみません。また一つ問題が・・・。
トップに表示する記事の数を10ほどにして、残りは、「次のページを見る」といった具合にしたいのです。
トップに表示する記事の制限はできるのですが、残りのブログを表示する「次のページを見る」といったことができません。
表示する記事を10としたなら、最新の記事が10表示されるだけで、残りの古いページにアクセスできるボタンがありません。
(1)今日の記事
------------
(2)昨日の記事
------------
↓
↓
(10)10日前の記事
--------------
次のページを見る
といったように、10日前より古いページを見る場合は、「次のページを見る」といった表示をさせたいのですが・・・。
質問ばかりで申し訳ないですが、もしやり方をご存知でしたら教えてください。
シーサーブログを利用しています。
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件)を作りましたし。可能だとしてもコメント欄で済む内容ではないので成功したらエントリーを上げます。
記事を参考にして、私のサイトに一覧表示を設置できました。ありがとうございました。
大変有益な情報、どうもありがとうございました。
こちらの記事を参考にカテゴリ・過去ログの一覧化にトライしてみました。
ただ、カテゴリはうまく一覧化できたのですが、過去ログの方は、サイド
バーの月をクリックした時は一覧化されません。
ページングのページやその上に表示される月をクリックした時は、うまく
一覧化されます。
大変恐縮ですが、何かアドバイスをいただけたら幸いです。
どうぞよろしくお願いいたします。m(_ _)m
もし再構築しなおしても解決しませんでしたらもう一度お知らせ下さい。
私も最初にURLの違いを疑ったのですが、どうやらそうではなさそうですね。
再構築も実施してみましたが、駄目でした。
seesaa側のバグなのでしょうか。。
今見たところ、サイドバーにリンクされた方の3つの月のみがリストが表示されていないようですね。最初に見たときのことはよく覚えていませんが、だんだん反映されていると言うことはないでしょうか?
http://blog-faq.seesaa.net/article/2105115.html
のような事例もありますし。
あるいはサイドバーのコンテンツの順番を一時的に変えて再構築などしたら、それをきっかけに反映されるのではなどとも思いますがいかがでしょうか。
を使わせていただきました。
ありがとうございます。
現在改造中なのですが、できれば記事リストだけを表示して、記事本体を非表示にしたいのですが、可能でしょうか。
タイトルを「記事」とした自由形式のコンテンツをヘッダーに追加して、表示する記事数を0にしてみたり、記事のコンテンツHTML編集で
<% loop:list_article -%>を消してみたりしましたが、無駄な試みでした。
お忙しいところ恐縮ですが、アドバイスをいただけますでしょうか。
よろしくお願いいたします。
<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で囲えばいいと思われます。
うまく非表示にできました。
参照リンク先を書いてくださったり、過去ログページまでご配慮くださってありがとうございました。
感謝、感謝です。!!
何度も何度も再構築していたら、一時的にデグレもありましたが、
徐々に反映されてきました。
25日の夜時点では、全て反映された状態です。
何度もご丁寧にありがとうございました。
助かりました!
ありがとうございます!!
でも 日付が 表示できませんでした.....
seesaaの設定なんでしょうか?どこも見ても 発見できませんでした。
もしよろしければ アドバイスいただけないでしょうか?
カテゴリ記事一覧が中央揃えになってしまうのがどうしても気になってたんですが、直すことができました!ほかにもカスタマイズしたい箇所が色々とありますのでまた参考にさせていただきます。