拙著「株はタイミングで儲けなさい」が発売されました。
過去20年間の株価データを元にバックテストを行い、どのようなタイミングで株を買うのが良いかを解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
最近のコメント/トラックバックをエントリーとともに表示するプラグイン
2005年6月23日 改良版を公開しましたので、そちらのエントリーも合わせてお読みください
みよたんさんのBlog「Magic White」のこちらのエントリーに、以下のような話が出ていました。
「MTEntriesタグの『recently_commented_on』で最近のコメントを表示すると、意図しない古いコメントが表示されてしまうことがある。」
確かに、言われてみればその通りです。
その解決法として、MTCollateプラグインを使う方法が紹介されていました。ただ、それだとタグが複雑になります。
そこで、最近のコメント/トラックバックを、エントリーとともに表示するプラグインを作ってみました。
プラグインのダウンロードとインストール
こちらをクリックしてプラグインのページを開き、その内容をすべてコピーして、メモ帳等に貼り付けてください。
そして、そのファイルに「Recents.pl」という名前をつけて保存し、Movable Typeの「plugins」ディレクトリにアップロードしてください。
追加されるテンプレートタグ
このプラグインをインストールすると、以下のテンプレートタグが追加されます。
・MTCommentsRecent/MTPingsRecent
最近のコメント/トラックバックを、エントリーとともに出力するコンテナタグです。以下のアトリビュートを指定することができます。
lastn="○" | 最近の○件のコメント/トラックバックを出力します。 |
---|---|
entry_sort_order ="desend|ascend" | 出力されるエントリーを並べ替える順序を指定します。 descendを指定すると、出力対象のエントリーのうち、最近コメントがついたエントリーから順に表示します。 一方、ascendを指定すると、出力対象のエントリーのうち、最近コメントがついたエントリーが後になるように表示します。 省略すると、descendを指定したものとします。 |
comment_sort_order ="descend|ascend" | 各エントリーに対するコメントを並べ替える順序を指定します。 指定しない場合は、Movable Typeの設定画面の「コメントを並べる順番」に従います。 |
ping_sort_order ="descend|ascend" | 各エントリーに対するトラックバックを並べ替える順序を指定します。 指定しない場合は、最近のトラックバックから順に表示します。 |
・MTCommentsRecentIfEntry/MTPingsRecentIfEntry
次に出力するものがエントリーかどうかを判断する条件タグです。
エントリーである場合は、MTEntry○○タグでエントリーの情報を出力します。
・MTCommentsRecentIfComment
次に出力するものがコメントかどうかを判断する条件タグです。
コメントである場合は、MTComment○○タグでコメントの情報を出力します。
・MTPingsRecentIfPing
次に出力するものがトラックバックかどうかを判断する条件タグです。
トラックバックである場合は、MTPing○○タグでトラックバックの情報を出力します。
・MTCommentsRecentEntryHeader/MTPingsRecentEntryHeader
一連のエントリーの中で、最初のエントリーかどうかを判断する条件タグです。
・MTCommentsRecentEntryFooter/MTPingsRecentEntryFooter
一連のエントリーの中で、最後のエントリーかどうかを判断する条件タグです。
・MTCommentsRecentHeader/MTPingsRecentHeader
各エントリーに対するコメント/トラックバックの中で、最初のものかどうかを判断する条件タグです。
・MTCommentsRecentFooter/MTPingsRecentFooter
各エントリーに対するコメント/トラックバックの中で、最後のものかどうかを判断する条件タグです。
使用例
・例1
最近の10件のコメントをエントリーとともに箇条書きにし、エントリーは最近コメントがついたものから順にして、個々のエントリーへのコメントは古いものから順に表示する。
<ul> <MTCommentsRecent lastn="10" comment_sort_order="ascend"> <MTCommentsRecentIfEntry><li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>(<$MTEntryDate$>)</MTCommentsRecentIfEntry> <MTCommentsRecentIfComment> <MTCommentsRecentHeader><ul></MTCommentsRecentHeader> <li><$MTCommentAuthorLink$>(<$MTCommentDate$>) <MTCommentsRecentFooter></ul></li></MTCommentsRecentFooter> </MTCommentsRecentIfComment> </MTCommentsRecent> </ul>
・例2
最近の10件のトラックバックをエントリーとともに箇条書きにし、エントリーは最近コメントがついたものから順にして、個々のエントリーへのトラックバックは古いものから順に表示する。
<ul> <MTPingsRecent lastn="10" ping_sort_order="ascend"> <MTPingsRecentIfEntry><li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>(<$MTEntryDate$>)</MTPingsRecentIfEntry> <MTPingsRecentIfPing> <MTPingsRecentHeader><ul></MTPingsRecentHeader> <li><a href="<$MTPingURL$>"><$MTPingTitle$></a>(<$MTPingDate$>) <MTPingsRecentFooter></ul></li></MTPingsRecentFooter> </MTPingsRecentIfPing> </MTPingsRecent> </ul>
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください
さえら
こんばんはー。
プラグイン 使わせていただこうとあれこれ試みたのですが
どうもうまくツリーになりません。
ulとliの位置が悪いんだろうと思うのですが。。。
壱
こんばんは。
小粋空間さんのリストと同じ動作になるようにするには、以下のようにすれば良いと思います。
<div class="sidetitle">
Recent Comments
</div>
<div class="side">
<MTCommentsRecent lastn="10">
<MTCommentsRecentIfEntry>
<a href="<$MTEntryPermalink$>" title="<$MTEntryTitle encode_html="1"$>"><$MTEntryTitle$></a>
</MTCommentsRecentIfEntry>
<MTCommentsRecentIfComment>
<MTCommentsRecentHeader><ul></MTCommentsRecentHeader>
<li><a href="<$MTEntryPermalink$>#<$MTCommentID$>">
<$MTCommentAuthor$></a> <$MTCommentDate format="%m/%d"></li>
<MTCommentsRecentFooter></ul></MTCommentsRecentFooter>
</MTCommentsRecentIfComment>
</MTCommentsRecent>
</div>
さえら
こんにちはー。ずいぶん遅くなりましたが
やっと、思い通りの表示にできました。
ありがとうございました。
さえら
Ping 'http://www.h-fj.com/mt_cgi/mt/mt-tb.cgi/37' failed: トラックバック ID 37 は有効ではありません
とのエラーになって、トラックバックができません。どうしてでしょう?涙
壱
>さえらさん
こんにちは。プラグインのご利用ありがとうございます。
トラックバック一覧も「最新」の表示になって良かったです。
ところで、このエントリーのトラックバックURLは「http://www.h-fj.com/mt_cgi/mt/mt-tb.cgi/371」です。
最後の「1」が抜けています。
さえら
あらら・・・なんたる単純ミス!失礼しました。
トラックバックさせていただきました。
お世話になりました。
zord
こんにちは。非常に便利と思い、使わせて頂こうと思ったのですが、ダイナミック・パブリッシングのページでは使えないでしょうか? 以下のエラーになってしまうようです。
The requested page could not be found.
Smarty error: [in mt:36 line 254]: syntax error: unrecognized tag 'MTCommentsRecent' (Smarty_Compiler.class.php, line 556)
変な質問でしたらすいません。
壱
>zordさん
こんにちは。
ダイナミック・パブリッシングでは、従来のPerlのプラグインのうち、テンプレートタグを拡張するものは、使うことができません。
ダイナミック・パブリッシング用に、PHPでプラグインを作り直すことが必要になります。
zord
壱さん
そうでしたか。ありがとうございました。
fuul
プラグイン使わせていただきました。
本当にありがとうございました。
これからもどうぞよろしくおねがいします。
m(_ _)m
銀次
こんにちは、ご無沙汰しています。
Recentsが直接関係があるのか分からないのですが、最近になって急に、カテゴリーアーカイブを再構築するとエラーがでるようになってしまいました。
エラーメッセージは、「Can't call method "id" on an undefined value at /xxx/xxx/xxx/xxx/plugins/Recents.pl line 234.」というものです。
特に最近MTのバージョンを上げたとかカスタマイズしたわけではありません。
気になる点は、英語のスパムコメントを何件か削除したタイミングでおかしくなったような気がします。
Recents バージョン 1.01
Movable Type バージョン 3.2-ja-2
自分でも調べてみたのですが、何かアドバイス頂けたら幸いです。
壱
>銀次さん
こんにちは。
「line 234」とありますが、おそらく134行目ではないかと思います。
134行目は以下のようになっています。
next if ($category && $entry->category && !$force && $category->id != $entry->category->id);
これを以下のように変えてみてください。
next if ($category && !$force && !$entry->is_in_category($category));
銀次
ありがとうございます!!
エラーメッセージをそのままコピペしたので、234行目は間違いないと思います…。
ちなみに、
next if ($category && $entry->category && !$force && $category->id != $entry->category->id);
は134行目に見当たらず、234行目に似たような、
next if ($category && !$force && $category->id != $entry->category->id);
というのがあったので、234行目をアドバイス通りに変えてみたところ、うまく再構築できました!
お手数お掛けして申し訳ありませんでした。
本当にありがとうございました!
ちなみに何でエラーになったんでしょうね?
銀次
あ、そうそう!
もう大分前のことになってしまいますが、壱さんの本「上級カスタマイズ術」買わせてもらいましたよ!
重宝させてもらってます♪