月別アーカイブを昇順に
すっきり表示になった 月別アーカイブ なんだけど・・・
Magic White さま 「月別アーカイブの表示を昇り順にする」 拝見したら、
感覚的に デフォルトの降順より、絶対、昇順のほうがいい!と思ったので、早速 真似させていただきました。
まず、ArchiveDateHeader Plugin ・ ArchiveYear Plugin ・ ArchiveLoad Plugin をダウンロードして、
plugins フォルダにアップします。やむやむ では、先のカスタマイズで ArchiveDateHeader と ArchiveYear は
すでに plugins フォルダに入ってたので、あらたに ArchiveLoad Plugin のみ 追加しました。
ここまでの準備ができたら、サイドバーの 月別アーカイブの箇所を ↓のような記述にします。
(小粋テンプレート の場合の記述例です。)
<div class="side" id="monthlylist">
<ul>
<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader>
<li><b><$MTArchiveDate format="%Y"$></b>
<MTArchiveYear order="ascend"><MTArchiveYearIfEntries><MTArchiveLoad><MTDateHeader><a href="<$MTArchiveLink$>" title="<$MTArchiveCount$>"><$MTArchiveDate format="%m"$></a>
</MTDateHeader></MTArchiveLoad></MTArchiveYearIfEntries></MTArchiveYear></li>
</MTArchiveDateHeader>
</MTArchiveList></ul>
</div>
2005年 1月 14日(金) 仏滅 今日は何の日? 2006年の今日のエントリ
トラックバックランキング
caramel * vanilla さま 「トラックバックランキングのプラグイン」 経由で
BoundlessOcean さまの こちら のエントリから MTTrackbackRanking プラグインを DL、
いつものように 解凍して でてきた mt-trackback.pl を plugins フォルダにアップします。
あとは、ランキングを表示させたいテンプレートに ↓のように ソースを追加します。
Total Trackback : <$MTTrackbackCount$><br />
<MTTrackbackRankingEntries lastn="10" sort_order="desc">
<MTTrackbackRankingEntry>
<$MTTrackbackRankingEntryRanking$> :
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
(<$MTTrackbackRankingEntryCount$>)<br />
</MTTrackbackRankingEntry>
</MTTrackbackRankingEntries>
やむやむ では、右サイドバーの Blog Status のところ
・・・・って、ランキング表示するほど トラックバックたくさんあるわけじゃないんだけど・・・(〃_ 〃)ゞ ポリポリ
10 のところは、上位何エントリを表示するか、という数字ですので、適当に変えて下さい。
あと、desc は 降順で表示するという意味で、ここを asc にすると、昇順になります。
それはそうと・・・GooglePageRank の画像、表示されないことが多いですね。(ー’`ー;) ウーン
年間カレンダー。
Stupid Excuse!! さまの 「年間カレンダー(暫定)」 を拝見して、真似しちゃいました。
これ、「月別アーカイブをすっきり表示に」 のときに ホントは一気にやってしまいたかったんだけど、
なんだか 難しそうで、躊躇してたんですよねー。(^^*) ホホホホ
nlog(n) さま 「年間カレンダーを作る」
carmel*vanilla さま 「年間アーカイブの作成」 ・ 「年間アーカイブの作成[補足]」 も、参考にさせていただきました。
やり方ですが・・・
まず、ArchiveYear.pl と ArchiveDateHeader.pl を ダウンロードして解凍、plugins ディレクトリにアップします。
次に、テンプレートを作成します。
MT管理画面の 「テンプレート」 → 「新しいアーカイブ・テンプレートを作る」 で、「テンプレートの名前」 は適当、
「テンプレートの中身」 には、プロフィールのテンプレートを コピペして、真ん中に カレンダーを一年分並べるソースを書きました。
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<!-- The first row of the table shows last year,
this year, and next year. -->
<tr>
<td valign="bottom"><MTArchiveYearPrevious>
<span class="calendarlink"><a href="<$MTBlogURL$><$MTArchiveDate format="archives/%Y/"$>">
<$MTArchiveDate format="%Y"$>
</a></span>
</MTArchiveYearPrevious></td>
<td align="center"><span class="year"><$MTArchiveDate format="%Y"$></span></td>
<td align="right" valign="bottom"><MTArchiveYearNext>
<span class="calendarlink"><a href="<$MTBlogURL$><$MTArchiveDate format="archives/%Y/"$>">
<$MTArchiveDate format="%Y"$> </a></span>
</MTArchiveYearNext></td>
</tr><!-- More rows will be added to the table in this section. -->
<MTArchiveYear columns="3" skip="yes">
<MTArchiveYearRowHeader><tr></MTArchiveYearRowHeader>
<td align="center" valign="top">
<MTArchiveYearIfNotBlank><!-- This is just a standard calendar section. Be sure to use
month="this" in the MTCalendar tag! -->
<table align="center" border="0" cellspacing="4" cellpadding="0" style="margin:15px">
<tr><th colspan="7">
<span class="calendarhead"><$MTArchiveDate format="%B %Y"$></span>
</th></tr>
<tr>
<th><span class="calendar"><FONT COLOR="red">Sun</FONT></span></th>
<th><span class="calendar">Mon</span></th>
<th><span class="calendar">Tue</span></th>
<th><span class="calendar">Wed</span></th>
<th><span class="calendar">Thu</span></th>
<th><span class="calendar">Fri</span></th>
<th><span class="calendar"><FONT COLOR="blue">Sat</FONT></span></th>
</tr>
<MTCalendar month="this">
<MTCalendarWeekHeader><tr></MTCalendarWeekHeader>
<td align="center"><span class="calendar">
<MTCalendarIfEntries><MTEntries lastn="1">
<a title="[<$MTEntryCategory$>] <$MTEntryTitle$> | <$MTEntryDate format="%X"$>" href="<$MTEntryLink archive_type="Daily"$>"><$MTCalendarDay$></a>
</MTEntries></MTCalendarIfEntries>
<MTCalendarIfNoEntries><MTCalendarDay></MTCalendarIfNoEntries>
<MTCalendarIfBlank> </MTCalendarIfBlank>
</span></td>
<MTCalendarWeekFooter></tr></MTCalendarWeekFooter>
</MTCalendar>
</table>
</MTArchiveYearIfNotBlank>
</td>
<MTArchiveYearRowFooter></tr></MTArchiveYearRowFooter>
</MTArchiveYear>
</table>
こんな感じ。やむやむでは、skip="yes" を はずしました。
これを はずすことで、エントリのない月のカレンダーも表示されます。このあたりは 好き好きで。
さらに、日曜・祝祭日に 色を付ける ための記述と、リアルタイムカレンダー を実現させるスクリプトの記述を
プラスしています。あと、見映えがよくなるように、スタイルシートを 少し直しました。
最後に、年間アーカイブ(カレンダー)にリンクを はりたい メインページ等のテンプレートに↓のように 記述します。
<ul>
<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader>
<li><a href="<$MTArchiveDate format="http://caetla.oops.jp/blog2/archives/%Y/" $>" title="<$MTArchiveDate format="Calendar Archive %Y"$>">
<$MTArchiveDate format="%Y" $></a> (<$MTArchiveYearCount$>)</li>
</MTArchiveDateHeader>
</MTArchiveList>
</ul>
なんだか 時間かかっちゃった。右サイドバーの 「Yearly Archives」 のところを 開いてみてね。♪v( ̄(││) ̄)v♪
カレンダーの日付でリンクになってるところは その日にエントリが存在する日で、数字にカーソルを載せると
その日の
その日の日別アーカイブにジャンプします。(このあたりの動作は、メインページ他の左上に配置してるカレンダーと同じです。)
また 年間アーカイブも カテゴリアーカイブ、月別アーカイブと同様
← こんなふうに 選択されたリンクが 強調表示されるようにしました。
2005年 1月 13日(木) 先負 今日は何の日?
月別アーカイブをすっきり表示に
Magic White さま 「月別アーカイブの表示の変更」 見て、このすっきり感、いいっ!と思ったので 早速 真似してみることに。
まず、ArchiveDateHeader Plugin で プラグインをダウンロード、解凍して、いつものように plugins フォルダにアップします。
Magic White さま同様、やむやむ も 小粋空間 さまのテンプレートを使わせていただいてるので、
サイドバー Monthly Archives のテンプレートに 以下のように記述しました。
<div id="categories">
<ul>
<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader>
<li><b><$MTArchiveDate format="%Y"$></b>
</MTArchiveDateHeader>
<a href="<$MTArchiveLink$>" title="<$MTArchiveCount$>"><$MTArchiveDate format="%m"$></a></li>
</MTArchiveList></ul>
</div>
<div id="categories">~</div> は、カテゴリリストのスタイルシートを Monthly Archives にも
そのまま適用するために 使っています。
あと、こちら のカスタマイズを生かすために、
アーカイブリンクを強調表示するためのJavaScript を 一箇所 修正しました。
<script type="text/javascript" language="javascript">
<!--
var data = "<$MTArchiveTitle$>";
var year = data.substring(0,4);
var month = data.substring(12,14);
var nodes = document.getElementById('monthlylist').getElementsByTagName('a');
for (i = 0; i < nodes.length; i++) {
var a = year + "年" + month + "月";
if(nodes[i].innerHTML == a){
nodes[i].setAttribute("class","selectedlink");
nodes[i].setAttribute("className","selectedlink"); // for IE
}
}
//-->
</script>
の、青い字のところを ↓こうしました。これ直さないと、アーカイブリンクが強調表示されません。
var a = month;
←こんなふうに表示されるようになりました。
2005年1月の月別アーカイブのページにいるときの例です。
月のリンクにカーソルを載せると、その月のエントリ数が表示されます。
2005年 1月 12日(水) 友引 今日は何の日? 2006年の今日のエントリ
カレンダーの日曜・祝日に色付けちゃおう
以前から あちこちのサイトさまで見かけて気になってたんですけど、
今回、TOY COZY MUSEUM 別館 さまの 「カレンダーの休日表示をしてみました。」 を真似して、
やむやむ のカレンダーにも 休日表示ができました。手順は 2ステップです。
まず、こちら から 休日表示カレンダープラグインをいただいてきます。
解凍して 出て来たファイル jcalendarcolor.pl を plugins フォルダにアップします。
次に、カレンダーのテンプレート(やむやむでは、小粋空間 さまのテンプレートで、月送りカレンダーにしています。)に
赤い字の記述をプラスします。(2ヵ所あるよ。)
<td align="center"<?php print "$style"; ?> bgcolor="<$MTCalendarColor$>" ><span class="calendar"><$MTCalendarDay$></span></td>
これで、OK。ただし、このプラグインを使うには、サーバに Date::Japanese::Holiday というPerlモジュールが
インストールされてる必要があるとのことです。インストールされてない環境でプラグインを使用すると
カレンダーの表示が崩れたり、再構築時にエラーになったりするそうです。
2005年 1月 11日(火) 先勝 今日は何の日?
選択されたアーカイブリンクを強調表示!
小粋空間 さまの 「選択されたアーカイブリンクを強調表示する」 を真似して、
サイドメニューにある Monthly Archives と Categories の リンクをクリックした時に
該当のリンクを 太字で強調表示させるカスタマイズを ほどこしてみました。
このカスタマイズに使う MTTagInvoke は、前に こちらのカスタマイズ の時に すでに DLしてて
MTTagInvoke.pl は plugins フォルダにアップ済みだったので、
今回は そこから先の、日付アーカイブと、カテゴリアーカイブのテンプレートに 手を加えるところだけ しました。
やむやむ では、サイドメニューの一つ一つを 個別の インデックス・テンプレートにしてて、最初、MTTagInvoke のタグを
個々の テンプレートに記述して、再構築してみたのですが、エラーになってしまったので、
日付アーカイブのテンプレート と カテゴリアーカイブのテンプレート に Monthly Archives と Categories の部分を
それぞれ戻して、そこに直接 MTTagInvoke タグを使ったら OKでした。
これで、例えば、Categories で、MTカスタマイズを選択してリンクをクリックすると、
ジャンプしたMTカスタマイズのアーカイブページでは、
MTカスタマイズ の文字が 太字で強調表示されるようになりました。
あと、カレンダーの日付をクリックしてジャンプする 日別アーカイブでも、
例えば 本日1月11日をクリックした場合、
サイドメニューの Monthly Archives で、2005年1月 が、強調表示されます。
2005年 1月 9日(日) 先負 今日は何の日? 2006年の今日のエントリ
長過ぎるタイトルもすっきり一行に
サイドバーの 最近のエントリ、最近のコメント、最近のトラックバック等で、タイトルが長過ぎて 折り返しになるのって
気になったことありませんか?意外と小心者のさえらは、どうもこれが気になって仕方なかったんです。
それを解決してくれる記事を 先ほど こちら でもお世話になった う・わ・き・も・の さまで発見っ!!
「エントリーのトリミング」・・・(  ̄O ̄)ホー、トリミングというのかぁ。。。
てことで、やってみました。人生迷い箸 さまから 日本語対応トリミングフィルタ をちょうだいします。
テキストエディタに 以下のように記述、名前を mt-trimj.pl などと付けて自分のブログの文字コードで保存したら、
plugins フォルダにアップします。
# 指定された文字数(半角文字数)にトリミングするフィルタ
package MT::Plugin::Trimj;use MT::Template::Context;
use MT::ConfigMgr;MT::Template::Context->add_global_filter(trimj_to => sub {
my($str, $nstr, $ctx) = @_;
my $sippo = '...';my $tmpstr = $str;
my $c = MT::ConfigMgr->instance->PublishCharset;
my $conv_in;
if (lc $c eq lc 'Shift_JIS') {
$conv_in = 'sjis';
} elsif (lc $c eq lc 'ISO-2022-JP') {
$conv_in = 'jis';
} elsif (lc $c eq lc 'UTF-8') {
$conv_in = 'utf8';
} elsif (lc $c eq lc 'EUC-JP') {
$conv_in = 'euc';
}my $jcnv;
eval 'use Jcode;';
if($@){
require 'jcode.pl';
$jcnv = 'jcode::convert';
}else{
$jcnv = 'Jcode::convert';
}
if ($conv_in ne 'euc') {
&$jcnv(\$str, 'euc', $conv_in);
}# 比較をここに移動
my $lenstr = length($str);
if($lenstr <= $nstr) {
return $tmpstr;
}my $out = substr($str,0,$nstr);
if ($out =~ /\x8F$/ or $out =~ tr/\x8E\xA1-\xFE// % 2) {
chop $out;
if($out =~ /\x8F$/){
chop $out;
}
}
$out .= $sippo;
# 尻尾を付けたくない場合は、コメントアウトのこと。if ($conv_in ne 'euc') {
&$jcnv(\$out, $conv_in, 'euc');
}return $out;
});1;
あとは、<$MTEntryTitle$>を<$MTEntryTitle trimj_to="25"$>に変更するだけです。
25のところは、文字数です。サイドバーに合わせて、調整してください。
同様に、最近のコメント、トラックバックにも 使えますね。
一つのタイトルで、一行・・・これは、見た目 かーーーーなりスッキリです。ヽ(^◇^*)/ ワーイ
mt-link-number プラグインの便利な使い方
追記:少々 説明足らずな箇所がありましたので、記述を追加しました。ごめんなさいです。(13:30)
以前、こちら の記事で mt-link-number プラグイン を使って コメントに RES機能を付けたことを書いたのですが、
ちょっとわかりにくかったと思うので、具体的な使い方を記してみることにしました。
この mt-link-number プラグイン、工夫次第で いろんな使い方ができるのですが、
やむやむ では 以下のような使い方を しています。
記述をプラスする対象は 個別エントリーアーカイブのテンプレートです。設置手順は 5ステップ。
1.まず、こちら から mt-link-number.zip をいただいてきて、解凍、
でてきた mt-link-number.pl プラグインを plugins フォルダにアップします。
2.次に、各コメントの先頭に 番号とアンカーを置き、<$MTCommentBody$> に link_number 属性を
指定してあげます。これで「>>番号」をクリックしたときに、該当するコメント番号に移動できるようになります。
<MTComments>
...
<a name="<$MTCommentOrderNumber$>"></a>
<$MTCommentOrderNumber$>
...
<$MTCommentBody link_number="1"$>
...
</MTComments>
MTCommentOrderNumber のところを MTCommentID にすることもできます。
両者の違いは、MTCommentOrderNumber のほうは、<MTComments>内での通し番号になるため
見やすい反面、コメントを削除した場合などに番号がずれてしまいます。
これに対して、MTCommentID のほうは、完全にコメントと一対一になるのですが、ブログ全体を通した
絶対番号になるため連番にはなりません。やむやむ では、MTCommentOrderNumber を使っています。
3.それから、textarea に「>>番号」を挿入し、textarea にフォーカスを移すJavaScript を、</head> の直前あたりに
記述します。ほかに JavaScript があれば、そこに 赤い字のところだけ、プラスすればOKです。
<script type="text/javascript" language="javascript">
<!--
...
function insertCommentRef(n) {
document.comments_form.text.value += ">>" + n + "\n";
document.comments_form.text.focus();
}...
//-->
</script>
4.さらに、コメントフォームの先頭あたりに 以下のように アンカー(赤い字の部分)を置きます。これは、上記フォーカスの挙動が
ブラウザによって違うことに対する保険と、JavaScript が動かない環境でも移動だけはできるようにするための記述です。
<div class="comments-head">コメントしてください</div>
<a name="comment-form"></a>
5.最後に、上記アンカーへ飛びつつ JavaScript を実行するリンクを 各コメント近くに書きます。
やむやむでは、>>(コメントNo.)●●さん、と コメントをくださった方のお名前+「さん」付けになるようにしてます。↓こんな感じ。
<div class="comments-post">Posted by <$MTCommentAuthorLink default_name="Anonymous" spam_protect="1" show_email="0"$> <MTCommentAuthorIdentity> at <$MTCommentDate$> <a href="#comment-form" onClick="insertCommentRef('<$MTCommentOrderNumber$> <$MTCommentAuthor$>さん')">[RES]</a></div>
</div>
以上で、[RES] を押すと、そのコメントをしてくれた方のお名前が >>(コメントNo.)●●さん と入った
textarea に フォーカスされ、すぐに書きこみをスタートできます。
また、>>(コメントNo.) のところをクリックすると そのコメントに フォーカスされるようになります。