記事のインデックスを作る
2005年2月 7日 19:00 | コメント (12) | トラックバック (5)
- 記事のインデックスが欲しい。
- タイトル以外に概要があるといい
- リンクをクリックして個別表示ページに飛ぶのはイヤ
これが私が求めるインデックスで、実際にこのページに設置されているものです。記事の一覧を表示させる事自体は、標準の独自タグである {selected_entry_list} を使えば良いのですが、これによって書き出されるリンクは各記事の個別表示へのリンクとなっています。ページの該当位置にジャンプさせるプラグインもあるようですが、実は HTML を工夫すればプラグイン無しでも実現可能です。
この記事はテンプレートの HTML をある程度書き換える事ができる人に向けた内容です。また、実際に自分のページのデザインにあわせて使用するには CSS の知識が必要になる場合も必要になります。
インデックスを表示する
最初のポイントはここです。前述のように {selected_entry_list} は使えないので他の方法を使いますが、ここは逆転の発想で「記事のタイトルと概要だけを表示させてインデックス代わりにする」という作戦をとります。...と、これだけでは何が逆転なのか分からないですね。
sb 独自ブロックの entry は <!-- BEGIN entry --> と <!-- END entry --> で挟まれた内容を記事の件数分繰り返し表示し、記事一覧を作成します。そこで、記事そのものを表示するためにある entry ブロックを使ってインデックスを作ってしまおうという訳です。entry ブロックには1ページに1つだけという個数制限は無く、複数書けばその分だけ記事が表示されます。
つまり、実際に記事を表示させる entry ブロックはそのままに、インデックス用の entry ブロックをページ頭にもう1つ作るという事です。
<!-- BEGIN entry -->
{entry_title} {entry_date} {entry_time}
{entry_excerpt}
<!-- END entry -->
とりあえず上のように書けば、タイトル・作成日時・概要を羅列したインデックスが、そのページに表示される記事の分だけ作成されます。(インデックスが作成されるというより、タイトルだけで本文やその他を隠した記事を表示している、という状態)あとはこのインデックスを自分のページに合わせてデザインするだけです。
ページ内の該当記事にジャンプさせる
インデックスからページ内の該当記事にジャンプさせるためには 3つのステップが必要です。
- 飛び先の準備
-
飛び先、つまり各記事に目印をつける必要があります。各記事には個別の ID が割り当てられており、独自タグ {entry_id} を使って表示する事ができます。実際の記事を表示させる entry ブロックの一番最初の要素に id="eid{entry_id}" を追加します。標準のテンプレートを例にとると、以下のようになります。(なお、各記事のタイトル部分に個別表示へのリンクを設定していない人は 「Netscape / Firefox でのページ内ジャンプ動作」 も併せて読んでください)
<!-- BEGIN entry -->
<div class="entry" id="eid{entry_id}">
<!-- BEGIN seque........これで開始部分に記事 ID の目印(アンカー)が作られ、そこにジャンプする準備が整いました。
- インデックスの準備
-
次に、インデックス用の entry ブロックに先ほど作った目印(アンカー)にジャンプするリンクを作ります。ページ内ジャンプは # を使い、当然 {entry_id} と組み合わせて a href="#eid{entry_id}" というリンクを作成します。
<a href="#eid{entry_id}">{entry_title}</a>
- sb の設定
-
sb はアーカイブ表示時、entry ブロックを使って作成した各記事の先頭に「eid記事 ID」という目印を自動的につける仕様となっています。この方法では entry ブロックでインデックスを作成しているため、そのままではリンクをクリックするとその場にジャンプするというなんともマヌケな状態になります。
そこで、sb 本体 lib フォルダ内の sbcommon.pl というファイル 71行目の「1」を「0」に書き換えて自動マーキングをオフにします。ファイルを修正したら所定の位置にアップロードしてください。71行目 'marking' => 0, # アーカイブにつくエントリー用のマーキングフラグ
Serene Bach でマーキングをオフにするには
Serene Bach でマーキングをオフにするには「lib / sb」にある Config.pm 139行目の「1」を「0」に書き換えます。
139行目 'basic_marking' => 0, # アーカイブにつくエントリー用のマーキングフラグ
これでリンクをクリックするとページ内にジャンプするというインデックスが完成しました。テンプレートを自分で書き換えた事がある人ならお気づきだと思いますが、このインデックスは CSS を調整すれば2カラムや3カラム構成のメニュー部分に表示させることも可能です。ただし、その場合は記事タイトルのみを表示させるなど、すっきりまとめる必要があるでしょう。
おまけ
おまけとしてこの Studio Ponytail WEB のトップページで使用している昔ながらの What's New の作り方を紹介します。これはタイトルをクリックすると該当カテゴリの記事掲載場所にジャンプするというものです。
<a href="sb.cgi?cid={category_id}#e_id{entry_id}">{entry_title}</a>
{category_id} は記事のカテゴリー ID を表示するための独自タグで(って、そのまんま)「sb.cgi?cid=○」というのはいわずと知れた、各カテゴリーを表示させる URL アドレスです。あとはその後ろに #e_id{entry_id} をつければ、該当箇所へのジャンプができあがり、という訳です。まあ、おそらくほとんどの人はトップページにそのまま新しい記事が表示される構成なので必要ないと思いますが、独自タグを組み合わせるとこういう事もできる、という余談でした。
コメント(12)
Kaz.
2006年9月26日 19:16
> サヤさん
原理としては「記事のインデックスを作る」の方法で
サムネイルを表示させているだけなのですが
サムネイル画像の名前をあらかじめ変更しておく必要があり
「とにかく簡単に更新したい」という場合には不向きです。
■ 以下をインデックス用の entry に表示
<a href="#eid{entry_id}">
<img src="{site_top}img/thm0_{entry_id}.jpg" alt="{entry_title}" title="{entry_title}" />
</a>
■ サムネイル画像の名前変更
1:画像を掲載する予定のエントリーを作成する
2:エントリーの ID をメモする
(下書き / 公開 のどちらかを選んで保存すれば
エントリーに ID が割り振られます。
ID は「現在の状態を確認する」で確認できます)
3:アップロード画像の名前を ID の数字に書き換える
(ID 123 のエントリーに掲載する画像なら 123.jpg)
4:画像をアップロード
画像を FTP ソフトなどで直接アップロードするか
SB の記事編集画面からアップロードするかによって
細かい部分が違ってきますので、不明な点があればご質問ください。
サヤ
2006年9月26日 14:48
Kaz.さま。
SBのTips、本当に参考になります。
記事のインデックスを作る際、このサイトのギャラリーのようにサムネイル画像でインデックスを作るにはどうすればいいのでしょうか?
よければご教授いただけないでしょうか。
よろしくお願いいたします。
Kaz.
2005年10月20日 18:39
> みっちーさん
Serene Bach では「lib / sb」にある
Config.pm 139行目の「1」を「0」に書き換えればマーキングをオフにできます。
記事にも情報を追加しておきました。
みっちー
2005年10月20日 11:41
はじめまして。ちょっと質問なのですが。Serene Bachでマーキングをオフするには、どこをいじればいいのでしょうか。お手数ですが、お願いします。
Kaz.
2005年2月20日 13:17
> Suu さん
このページは比較的簡単な構造なので修正は楽ですが
Suu さんのページは大変そうですね。
テンプレート修正の記事が作成された時には
検証のお手伝いをしたいと思います。
Suu
2005年2月18日 09:43
昨夜は書き込みありがとうございます。
おまけに私のページのmacでの表示状況まで見て頂けるとは、本当にありがとうございます。色々教えて下さって本当に感謝しています。mac+IEがあんなことになってるとは露知らず、愕然としてしまいました。これからゆっくり修正がんばっていきたいと思います。本当にどうもありがとうございました。今後もちょくちょくお邪魔させていただきますね。
Kaz.
2005年2月17日 23:38
> Suu さん
修正はなんとかうまくいったようでホッとしました。
環境による表示の違いは困りますね。
ブラウザは少し手間をかけて Download / Install すればいいものの
OS の違いとなるとなかなか難しいものがあります。
kiki さんは DEAR DAYS 別冊 の Sui さんだったんですね。
実はほんの数日前に「ブラウザを全部インストールしてみた」の記事を見て
背景画像と文字を組み合わせるのは大変なんだな、と思ったところでした。
Suu(kiki)
2005年2月17日 20:44
とっても見やすくなりました。想定デザイン通りですよ。
差し出がましいかなとも思ったのですが、私もまったく逆の環境でmacの表示確認ができず困っているので、もしかしたらと思いコメントさせて頂きました。お役に立ったようでよかったです。別名書いててすみません。上記記事といい、こちらは大変興味深い記事が沢山あってよく覗かせて頂いてます。今後ともこちらで勉強させてもらいます。
Kaz.
2005年2月17日 20:05
> kiki さん
ご指摘ありがとうございます。
私が表示確認をしているのは
Safari 1.2.4 / IE 5.2.3 / Netscape 7.1 / FireFox 1.0
それぞれの Mac OS X 版のみなので
IE + Windows 環境でメニューが階段状なっている件には
全く気づいていませんでした。
IE は Mac OS X 版でもおかしな表示をして
その修正に苦労させられた記憶がありますが
Windows 版だとそんな事になっていたんですね。
確認環境が無いため、問題がありそうな部分を
予想しつつ修正しただけですが果たしてうまくいっているでしょうか。
ちなみに、想定しているデザインは以下のような感じです。
IE 5.5 + Windows だとメニュータブ以上に、他の部分がメタメタだという噂もチラホラ。
http://www.studio-ponytail.com/media/spw_av.gif
> 余計なお世話ですみません。
多環境での検証が不可能なので
こうった指摘にはむしろ大感謝です。
ガシガシつっこんでください。
kiki
2005年2月17日 09:02
ご存知ならすみません。
IEで見るとメニューが階段状になっててページの半分を占めてます。firefoxではきれいに横並びでしたが..
余計なお世話ですみません。いつも気になってたものですから。
読んだら削除して下さい。
コメントを投稿する
コメントの投稿には JavaScript が必要です。
ブラウザの JavaScript 機能を有効にしてください。
投稿ボタンを押してもエラーになりますのでご注意ください。
トラックバック(5)
トラックバックURL : http://www.studio-ponytail.com/mt/mt-tb.cgi/77
kotonone::詞の音:カスタマイズ色々 (2005年2月22日 11:32)
テンプレートをまたも変えましたボムガールのめけさんちで使っていたプルダウン式のテンプレートを配布していたので早速導入それからもう1つStudio Ponytailさんのところで見つけた記事のインデックスを作ると言うエ...
Mou*Mou:記事のインデックスを表示させる (2005年3月16日 11:13)
久しぶりのカスタマイズですーvもうやりたくてウズウズしてましたよ(笑)今日はトップに記事のインデックスをつけてみました^^参考にさせてもらったのは、Studio Ponytailさんの記事のインデックスを作るという記事。...
craftbox:インデックスを作ってみました (2005年5月22日 00:40)
カテゴリーとアーカイブにインデックスを作ってみました。トップページには最新の記事5件が、サイドメニューをクリックするとそれぞれの記事タイトルが、5件ずつ最上部に表示されます。ずらずらとログが並ぶより見...
TEY.B.S.:記事のタイトル一覧を作成しました。 (2005年8月 4日 02:09)
参考にさせていただいたのは、Studio Ponytail さんの記事。他にもいくつかのサイトでタイトル一覧をつくる方法を載せられていましたが、いちばん手軽かつ効果が高いと思った方法を採用しました。
ILLUSTRAMBLE/Blog:SB使用プラグイン・参考Tips (2006年1月 1日 00:02)
サイトを作るにあたり使わせていただいたSereneBachのプラグインや、参考にした記事を書き留めておきます。プラグインページナビゲーション展開(...
サヤ
2006年9月26日 19:29
早速のご返答ありがとうございます。
スクリプトを書き換える必要があるのかな?と思っていたのですが、テンプレートの編集とサムネイル画像の用意だけでよかったんですね。
そのアイディアに感服です。
どうもありがとうございます(*^_^*)
このコメントに返信する