二〇〇四年 四月 二十七日(

旧暦 三月九日 大安
甲申年 三月初九日

MT リストを2段組に表示する

めちゃめちゃ久しぶりなエントリで、おまけにめちゃめちゃ久しぶりなMTネタ。

早いもので、もうじきエントリを書き始めて1年になろうとしている。
最近、エントリの頻度がぐっと下がってしまったものの、こうしてちょっとでも書いていると月別のアーカイブのページは1月ごとに生成されていく。
で、このサイトのようにindexページに各月別アーカイブへのリンクをリストにして作っていたりすると、どんどんタテに長くなってきてしまうわけで。(12ヶ月で11個しかリンクがないのはご愛敬・・・^_^;)

さて、そういう長くなって困るリストをうまく見せる方法としては、selectタグを使ったプルダウンメニュー式なんかがよく使われている。
その方法は確かに優れているのだけど、このサイトのindexページの場合、デザインからしてあんまりカッコよく収まりそうにない。

それよりも、まだ横幅に余裕がありそうなので、タテ1列に表示されているリストを半分にして2段組にできればいいんじゃないかと思いついた。
つまり、たとえば一番新しい2004年4月から2003年10月までを一番左にタテに並べ、その右側にそれより古いのを並べるという感じだ。(現在はすでにそうなっているが、前はタテ1列に並んでいた。)

この部分は

<MTArchiveList archive_type="Monthly">
<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a><br />
</MTArchiveList>

という具合にMTArchiveListというタグで表示しているのだけど、このタグはlastnというオプションで、新しいのから何番目までという指定はできても、途中の○個目から○個目までという指定はできない。

そんなわけで、以前カテゴリ内リンクを作ったときにも使った、テンプレートでJavaScriptファイルを作ってしまう方法でやってみた。

手順1:外部JavaScriptファイルを作る
「Templateの編集」の画面で「新しい Index Template を作る」をクリックし、でてきた画面で「Templateの名前」に「Monthly Archive Title List」 などと適当な名前を付け、「Tempalteの中身」に次のようなコードを記述する。

function MonthArcList(){
var archives = new Array(<MTArchiveList archive_type="Monthly">
"<$MTArchiveLink$>","<$MTArchiveTitle$>",
</MTArchiveList>"");
return archives;
}

また、ファイル名は「monthly_archive_list.js」とし、「Index Template を Rebuild するときに自動的にこの Template を Rebuild する」にチェックを入れておく。
で、saveする。

手順2:IndexにJavaScriptを追加する
次に「Tempalteの編集」の画面からMain Indexの編集を行う。
まず、Templateの上の方の「</script>」がある行の次の行あたりに

<script src="./monthly_archive_list.js"></script>

という記述を追加する。
それから、アーカイブのリストの部分を書き直す。
<MTArchiveList archive_type="Monthly">
<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a><br />
</MTArchiveList>

という部分(これは人によっていろいろだと思われるが)を削除して(怖いから、必ずコピペでも何でもいいから、どこかにバックアップをしておいた方がいいです)、
<table>
<script language="JavaScript">
var e = MonthArcList();
var flg = 0;
var len=e.length-2;
document.write("<tr><td valign=top>");
for(i=0;i<len;i=i+2){
if(i>len/2 && flg==0){
document.write("</td><td valign=top>");
flg++;
}
document.write("<a href='",e[i],"'>",e[i+1],"</a><br />");
}
document.write("</td></tr>");
</script>
</table>

ってな具合のtableタグとJavaScriptのソースに置き換える。
(2004.04.29 コピペミスのため、コードがちょっと間違ってました。ごめんなさい。)
(2004.05.11 Archiveの配列の数を数えているところでミスがありました。で示した部分です。重ねてごめんなさい。)
これで、いまあるリストを半分にして左右2段組に表示されるはず。
saveしてrebuildする。


本当はCSSで2段組をやるとカッコいいのかもしれないんだけど、ワタシの場合、CSSでさんざん苦い目にあわされているので、とりあえずtableタグで2段組にした。
いろいろと必要な部分は修飾するなりしてください。

この件とは直接関係ないけど、このサイトではindexの月別アーカイブのタイトルを「2004-03」と出している。この方法は需要があるかな・・・。

Posted by mura at 2004年4月27日 20:44 | トラックバック
コメント

なかなか、うまい方法ですね。
table使うのはなんか抵抗があるので、CSSで使えるように改造してみます。

ところで、「途中の○個目から○個目」という指定はじしんがありませんが、lastnとoffsetというオプションを組み合わせたら、できた気がするのですが。
間違っていたらすいません。

Posted by: at 2004年4月30日 15:54

お久しぶりです。
わたしの場合、エントリ全体数が多くなりすぎたので(笑)、1〜200,201〜400というように割って、総インデックスを出そうとして、lastnとoffsetを使おうとしてなんだか挫折してそのまんまになってますです。
ちょっとした頭の体操にいかがでしょう、と他力本願・・・^^;)

Posted by: かえる at 2004年4月30日 16:16

たしか、offsetはMTEntriesだけで使えたような気がしていて、先ほど試してみましたが、やっぱりArchiveListではだめなようです(使い方が間違ってるのかもしれません)。
でも、考えてみれば、そういう風にオプションで値を渡せた方がスマートですね。ArchiveListでoffsetが有効になるプラグインを考えた方がよいのかもしれない・・・。

でも、自動的にリストが半分ずつになるように2段組しようとすると、やっぱり一筋縄ではいきそうにないですね・・・。

Posted by: mura at 2004年4月30日 18:53

はじめまして。
こちらからお礼のご挨拶にも伺わず、大変失礼いたしました。

ご訪問いただき、ありがとうございました(ぺこり)。

まだまだ初心者ですので、いろいろと参考にさせていただいております。
わかりやすいご説明で、本当に助かっております。

ありがとうございます!

これからも何かと(一方的に...苦笑)お世話になることが多いと思うのですが、どうぞよろしくお願いいたします。

次の機会には、勇気を出して(笑)トラックバックを送信させていただきますね!

ではまた。
失礼いたします。

Posted by: heltybaddy at 2004年5月 1日 21:32

トラックバックは別に義務でも何でもないので、あんまり気にしないでくださいね。>heltybaddyさん
ただ、なんとなく足跡を残したかっただけ、ってのもありますので(笑)。
まあ、これも何かのご縁ということで。

これからも、使っていただく中で「なんか変」というようなことがあったら、遠慮なくコメントしてやってください。
よろしくお願いします。

Posted by: mura at 2004年5月 6日 10:06

muraさん初めましてこんにちは!
友人に勧められて、HPを楽しく見ておりますヾ(^v^)k
私も近日中にMTを導入しようと思っているのですが、
一つ疑問に思う事があるんですが宜しいでしょうか?

muraさんのHPのトップに長文になると 続き...
と表示されてリンクされていますが、一体どう改造しているのでしょうか?m(__)m
私もindexでブログを使いたく思っていましたが、
長文がindexに全て表示されてしまうので、
かなり重たいページになってしまうと思ったんです。
もし宜しければ教えて頂けないでしょうか?
お忙しいとは思うので、お時間がある時で構いませんm(__)m
お返事の方楽しみにお待ちしております!


これらかもHPは意見させて頂きますね。
頑張って下さい、ささやかながら応援させて頂きます!

Posted by: キャナサキ at 2004年5月 7日 19:50

はじめまして。>チャナサキさん

MTは元々のデータの構造として、タイトル、本文、続きの本文、・・・というように本文の部分が2つに分かれていますので、とくにこれに関しては改造とかは加えていません。これは、インストールしてみれば百聞は一見にしかずという感じでよくわかると思います。
「続き...」という言葉自体はいろいろ変えることが可能なんですが、これはテンプレートというものを変えることで実現しています。

MTのページがデザインがそれぞれ違うのも、このテンプレートをいじることが可能で、その変更可能な範囲が非常に広いことが要因になっています。

Posted by: mura at 2004年5月 9日 00:12

muraさんありがとうございます!
早速違うサーバーで導入してみたところ出来ましたm(__)m
追記項目で設定が可能なのですね。
本当にご迷惑お掛けして申し訳ありませんでしたw
私も現在テンプレいじって楽しく頑張っています!
本当にありがとうございました!

これからも更新の方が頑張って下さい!

Posted by: キャナサキ at 2004年5月 9日 17:39

無事インストールできましたか。
よかったです。
テンプレートを懲りだすと、けっこう大変ですが、それはそれで楽しかったりします。がんばってみてください。

しかし、前のコメントでお名前間違って書いてしまいましたね。ごめんなさい。
(チャナ豆が好きなものでつい・・・<言い訳 ^_^;)

Posted by: mura at 2004年5月10日 10:05
コメントする









名前、アドレスを登録しますか?






トラックバック
このエントリのトラックバックURL

http://www.villagewood.net/mt/mt-tb.cgi/73

◇このサイトのサーバの調子によって、トラックバックを送信してもエラーが表示されたり、すぐにこのページに反映できないときがあります。ですが、トラックバック自体は送られていますので、重ねて送っていただかなくても大丈夫です。こちらでも出来るだけ早く反映できるようにrebuildしますので、ご容赦ください。
参照元URL
関連エントリ