なんか、夏休み開けてから AC とか入試関係と、その他もろもろでなかなか大変な毎日です。
おかげで、ブログもさぼりっぱなしだったりしますね。
そんな中、たまたま、MT のプラグインディレクトリなんか見てたのですが。
こんなものを見つけました。
ランダムなエントリーを抽出して表示してくれるらしい。面白い。
というわけで、さっそく使ってみた。
サイドバーに表示するように設定してみました。
お~、これは過去の黒歴史を読んでくれる人が多くなりそうで、いいのだか悪いのだか...
(実際に使ってみたい人は続きを読むべし。)
と、こんな感じに便利なプラグインを発見したのだが。
たぶん、これだけだったらブログ記事にしなかったと思う。
こんな素直な記事じゃ終わらないのが、最近のこのブログwww
なわけで、本題開始。
1.トラブル発生
サイドバーにランダムエントリーを表示しようと、ウィジェット追加に取り掛かった。
こんな感じで、Random Entries というウィジェットを追加した。
<div>
<h3 class="widget-header">Random Entries</h3>
<div class="widget-content">
<ul class="entry-meta">
<MTRandomEntries lastn="3">
<li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a><br />
<span><$MTEntryDate format="%y/%m/%d"$> | コメント(<mt:EntryCommentCount />)</span></li>
</MTRandomEntries>
</ul>
<p>日替わりらしい。<br />
仕様上ページ別に変わるらしい。<br />
Random な感じらしい。</p>
</div>
</div>
レファレンスには、"category" と "lastn" の値を与えてくれよ!って書いてある。
けど、カテゴリー指定なんていらない。
ということで、category 抜きでインデックステンプレートを再構築。
お~いいじゃん。じゃあ、すべて再構築というわけだが...
エラーが発生しました。
close ブログ記事「Firefox の検索バーをカスタマイズしてみる。」の再構築中にエラーが発生しました: テンプレート「ブログ記事」の再構築中にエラーが発生しました: <mtInclude>タグでエラーがありました: error in module フッター: テンプレート「フッター」の再構築中にエラーが発生しました: <mtIf>タグでエラーがありました: <mtInclude>タグでエラーがありました: error in module サイドバー: テンプレート「サイドバー」の再構築中にエラーが発生しました: <mtIf>タグでエラーがありました: <mtElse>タグでエラーがありました: <mtIf>タグでエラーがありました: <mtElse>タグでエラーがありました: <mtWidgetSet>タグでエラーがありました: <mtinclude>タグでエラーがありました: error in widget Random Entries: テンプレート「Random Entries」の再構築中にエラーが発生しました: <mtRandomEntries>タグでエラーがありました: MT::Category=HASH(0xa1547d0)というカテゴリはありません。
なに!また僕を困らせたいのですか。
そうですか、そうですか。
せっかくなので、お付き合いしてあげましょう。
2. 原因究明する
まあ、いつものようにエラーメッセージを元に原因究明するわけですが。
MT::Category=HASH(0xa1547d0)というカテゴリはありません。とか言われても困る。
どうも、ブログ記事の再構築をするとだめらしい。
日別とか、インデックスは問題なさそう。
わからねぇ。ということで、プラグイン本体と戯れることにする。
どうも、プラグイン本体 (randomentries.pl) は 100 行そこそこの大したことないものみたいだ。
読むのも楽だ。だけど、MT のプラグインなんて組んだことないし、面倒だ。
今回の目的、早い話がカテゴリー指定なんていらないから、その部分を取り払えばいい。
このプラグインの中身はカテゴリー指定があった場合、カテゴリーの記事IDをリストアップしてそこからランダムにみたいなことをやってるのかね?
ということは前半部分の catLabel とか使ってる部分いらなくて、
else {
@entries = MT::Entry->load ({ blog_id => $blog_id,
status => MT::Entry::RELEASE() });
}
ここだけ実行すればいい。
23 ~ 70 行目は、コメントアウトとかして取り払おう。
で、上記の else の中身だけを残せばいい。
3. 適当がちょうどいい。
さあ、ひと仕事終了。
一応、修正版?なのか?を、上げておきます。
再構築しても、何もエラー出ないしちゃんと動いてるみたいだし、問題ないね。
こういうエラーは、適当に推し進めていくと以外とうまくいくものだ。
いや、僕は常に "適当" で生きている人間ですからw
余談:
ん?修正版?なのか?の if(0) は何だって?
いや、これ結構使わない?
いらない部分をコメントアウトしたのと同じ効果を得ている、はず。
消去するのは、作成者の気持ちを考えると... (何
コメントアウトするのが一番いいのだけど、正直この行数を全部コメントアウトしていくのは面倒。
なんて時に if(0) の出番です。結構使います。

コメントする