お知らせ

作って覚えるPHP+MySQLアプリケーション 2008年6月24日

作って覚えるPHP+MySQLアプリケーション」が発売されました。
PHP+MySQL+Smartyを使って、ブログ/ショッピングサイト/マッシュアップの3つのWebアプリケーションを作る方法を解説しています。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

最近のコメント/トラックバックをエントリーごとにまとめて出力するプラグイン(改良版)

| コメント(18) | トラックバック(0)

当Blogでは、最新のコメントやトラックバックをエントリーごとにまとめて出力するプラグインとして、以下の2つを公開しています。

今回、これら2つのプラグインの機能を統合し、1つのプラグインにまとめたものを作成しました。

なお、旧版とは機能はほぼ同じですが、タグの書き方が異なります。
旧版をすでにお使いの方は、そのままお使いいただく方が楽です。

1.旧版のアンインストール

前述の2つのプラグインをお使いの方は、Movable Typeのpluginsディレクトリから、それらのファイルを削除してください(EntriesRecentlyPinged.plとRecents.pl)

2.プラグインのインストール

プラグインは以下からダウンロードすることができます。

Recents_2_00.zip

プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。

ダウンロードしたファイルを解凍し、それでできた「Recents」フォルダを、Movable Typeの「plugins」ディレクトリの中にアップロードします。

3.タグの例

このプラグインを利用して、最近のコメント10件をエントリーごとにまとめて表示するには、以下のようにタグを組み合わせます。

<ul>
<MTEntriesRecentlyCommented comment_lastn="10">
  <li><$MTEntryTitle$>(<$MTEntryDate$>)
      <ul>
        <MTRecentComments>
        <li><$MTCommentAuthor$>(<$MTCommentDate$>)</li>
        </MTRecentComments>
      </ul>
   </li>
</MTEntriesRecentlyCommented>
</ul>

また、最近のトラックバック10件をエントリーごとにまとめて表示するには、以下のようにタグを組み合わせます。

<ul>
<MTEntriesRecentlyPinged ping_lastn="10">
  <li><$MTEntryTitle$>(<$MTEntryDate$>)
      <ul>
      <MTRecentPings>
        <li><$MTPingBlogName$>(<$MTPingDate$>)</li>
      </MTRecentPings>
      </ul>
   </li>
</MTEntriesRecentlyPinged>
</ul>

4.追加されるテンプレートタグ

このプラグインをインストールすると、以下のテンプレートタグが追加されます。

・MTEntriesRecentlyCommented/MTEntriesRecentlyPinged
最近にコメント(MTEntriesRecentlyCommented)/トラックバック(MTEntriesRecentlyPinged)があったエントリーを出力するコンテナタグです。
以下のアトリビュートを指定することができます。

アトリビュート内容
lastn="x"最大でx個のエントリーを出力します。
comment_lastn="x"
(MTEntryRecentlyCommentedタグの場合)
ping_lastn="x"
(MTEntryRecentlyPingedタグの場合)
最近のコメント/トラックバックを最大でx個まで検索します。
lastn="x"と同時に指定した場合は、lastnとcomment_lastn(またはping_lastn)のどちらかの条件を満たした時点で出力が終わります。
per_entry="x"エントリー1つにつき、最大でx件のコメント/トラックバックを出力します。
sort_order="descend|ascend"見つかったエントリーを、最近コメント/トラックバックがあったものから順に表示するか(descend)、その逆にするか(ascend)を指定します。
指定しない場合は、sort_order="descend"を指定したのと同じになります。
mode="force"標準では、カテゴリー・アーカイブ・ページと日付アーカイブ・ページでは、そのアーカイブ内のコメント/トラックバックのみを出力の対象にします。
これらのテンプレートでも全てのコメント/トラックバックを対象にしたい場合は、このアトリビュートを指定します。
mode="entry_date"日付アーカイブ・ページでは、標準では、アーカイブの期間にあったコメント/トラックバックをエントリーごとにまとめて出力します。
これを変えて、アーカイブの期間のエントリーについたコメント/トラックバックを出力するようにしたい場合は、このアトリビュートを指定します。
search_limit="x"最近のコメント/トラックバックのうち、x件までを検索の対象にします。
カテゴリー・アーカイブ・テンプレートの中でこのタグを使う場合と、日付アーカイブ・テンプレートで「mode="entry_date"」のアトリビュートを指定する場合、search_limitアトリビュートで、検索対象の件数を制限しておく方が良いです(そうしないと、コメント/トラックバックが増えるほど再構築に時間がかかるようになります)。

・MTRecentComments/MTRecentPings
個々のエントリーについた最近のコメント(MTRecentComments)/トラックバック(MTRecentPings)を出力するコンテナタグです。
MTEntriesRecentlyCommented/MTEntriesRecentlyPingedタグのコンテナの中で使います。

標準では、最近のコメント/トラックバックを、新しいものから順に出力します。
古いものから順に出力したい場合は、「sort_order="ascend"」のアトリビュートを付加します。

・MTRecentCommentCount/MTRecentPingCount
最近のコメント(MTRecentCommentCount)/トラックバック(MTRecentPingCount)の数を出力する変数タグです。
MTEntriesRecentlyCommented/MTEntriesRecentlyPingedタグのコンテナの中で使い、それらのタグに指定したアトリビュートに沿って、件数が数えられます。

トラックバック(0件)

このブログ記事を参照しているブログ一覧: 最近のコメント/トラックバックをエントリーごとにまとめて出力するプラグイン(改良版)

このブログ記事に対するトラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/636.

コメント(スレッド18件,コメント18件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

プラグインについてご質問をされる方は、ご自分のBlogのURLを必ず入力してください。
また、プラグインの開発やサポートを継続的に行えるようにするために、ドネーション(寄付)をしていただけると幸いです。
金銭的寄付だけでなく、精神的寄付も歓迎します。
ドネーションのページはこちら

No.1 footbrain : (無題)

こんにちは。
いつもいつもお世話になっています。

システム・メニューからプラグインをクリックすると、
[Can't locate object method "get_handle" via package "Recents::L10N" at lib/MT/Plugin.pm line 459.]
と表示され、インストールしているプラグインの一覧を見る事ができませんでした。

Recents2.00を削除すると、エラーは発生しません。

MTはVersion 3.31-jaですが、どこに問題があるのでしょうか?

No.2  Author Profile Page: (無題)

>footbrainさん
こんにちは。

おそらく、ファイルのアップロードが正しくありません。
zipファイルの解凍ソフトによっては、「Recents_2_00」というフォルダが作られ、その中に「Recents」フォルダができる場合があります。
「Recents_2_00」フォルダではなく、その中の「Recents」フォルダを、Movable Typeのpluginsディレクトリにアップロードしてください。
アップロードができたら、pluginsディレクトリの中に、以下のようにファイルが配置されていることを確認してください。

pluginsディレクトリ
└Recentsディレクトリ
 ├Recents.pl
 └libディレクトリ
  └Recentsディレクトリ
   ├L10N.pm
   └L10Nディレクトリ
    ├en_us.pm
    └ja.pm

No.3 footbrain : (無題)

>壱さん
ありがとうございます。

2.プラグインのインストールにも、

ダウンロードしたファイルを解凍し、それでできた「Recents」フォルダを、Movable Typeの「plugins」ディレクトリの中にアップロードします。

としっかり書いてありますね。汗

単純に旧バージョンと入れ替えるだけで済むと、勝手に思いこんで作業していたのが原因でした。

お手数をおかけして申し訳ありませんでした。

No.4 footbrain : (無題)

今回もお世話になります。汗
何度もポカをやってご迷惑をお掛けしているので、書き込みにくいのですが、

もうひとつ教えてください。

Cronで再構築をすると、「Reference found where even-sized list expected at *****/Recents/Recents.pl line 79, line 846.」とエラー(?)が返ってきます。

79行目の{};を();に書き換えて試してみたところ、エラーは起こりませんでしたが、

これでいいのか心配です。
エラーが起きなければイイってもんじゃありませんからね汗2

No.5  Author Profile Page: (無題)

>footbrainさん
こんにちは。

不具合をご指摘いただきありがとうございました。
ご指摘の通り、{}ではなく()が正しいです。

No.6 kefei : (無題)

管理人様

初めて書き込ませていただきます。

3.1xから3.33へアップデートしたので、これまで使わせていただいていたMTEntriesRecentlyPingedプラグインからRecentsへと切り替えてみたのですが、MTの「プラグインの設定」の画面に反映されません。

ディレクトリ構成はきちんと以下のようになっております。

pluginsディレクトリ
└Recentsディレクトリ
 ├Recents.pl
 └libディレクトリ
  └Recentsディレクトリ
   ├L10N.pm
   └L10Nディレクトリ
    ├en_us.pm
    └ja.pm

使用しているサーバはXREAです。アドバイスいただけましたら幸いでございます。

No.7  Author Profile Page: (無題)

>kefeiさん
こんにちは。プラグインご利用ありがとうございます。

「プラグインの設定」は、Blog毎のプラグインの設定のことでしょうか。
このプラグインには、Blog毎の設定項目はありませんので、Blog毎の設定のページにはこのプラグインは表示されません。
システムメニューのプラグイン一覧のページにのみ表示されます。

No.8 kefei : (無題)

管理人様

早速のご回答ありがとうございます。

システムメニューのプラグイン一覧を確認しましたらしっかりと表示されておりました。

お騒がせしました……が、度々恐縮ですが続けて質問がございます。

本文中の「最近のトラックバック10件をエントリーごとにまとめて表示するスクリプト」をインデックスページに設置してみたのですが、トラックバックが表示されません。

テスト的にそのままコピペしてきたのでタグ記述が間違っているとは考えにくく、途方に暮れております。

問題解決のヒントをいただければと思い書き込ませていただきました。

何卒よろしくお願いいたします。

No.9 kefei : (無題)

管理人様

早速のご回答ありがとうございます。

システムメニューのプラグイン一覧を確認しましたらしっかりと表示されておりました。

お騒がせしました……が、度々恐縮ですが続けて質問がございます。

本文中の「最近のトラックバック10件をエントリーごとにまとめて表示するスクリプト」をインデックスページに設置してみたのですが、トラックバックが表示されません。

テスト的にそのままコピペしてきたのでタグ記述が間違っているとは考えにくく、途方に暮れております。

問題解決のヒントをいただければと思い書き込ませていただきました。

何卒よろしくお願いいたします。

No.10 kefei : (無題)

自己解決しました!

理由は簡単。アップデート後これまで受信したトラックバックがすべて未公開に割り振られていたためでした!

お騒がせしました。

No.11 mogu : (無題)

管理人様

はじめまして。いつも参考にさせていただいております。
初めて書き込みをさせていただきます。

こちらのプラグインを導入したところ、
システムのプラグイン一覧に認識されているのですが、
テンプレートにこちらの例、およびSixApartにある例を貼り付けると、
下記のようなエラーが出てブログ自体が表示されません。
メッセージを読む限り、タグを認識できていないようです。
解決方法をご教授いただければ幸いです。

---以下エラーメッセージ---------------------------
Smarty error: [in mt:1 line 149]: syntax error: unrecognized tag 'MTEntriesRecentlyCommented' (Smarty_Compiler.class.php, line 580)

No.12  Author Profile Page: (無題)

>moguさん
こんにちは。プラグインご利用ありがとうございます。

申し訳ありませんが、このプラグインはダイナミック・パブリッシングには対応していません。
このプラグインだけでなく、当サイトで配布しているプラグインでは、ダイナミック・パブリッシングには対応させていません。
また、他の方が配布しているプラグインでも、ダイナミック・パブリッシングに対応しているものはあまり多くありません。

なお、このような状況がありますので、Movable Type標準のダイナミック・パブリッシングの代わりに、「Perl版ダイナミック・パブリッシング」というプラグインを公開しています。
可能であればそちらをご検討ください。

http://www.h-fj.com/blog/archives/2006/08/20-131455.php

No.13 mogu : (無題)

管理人様

自己解決しました。
原因はダイナミックパブリッシングではperlのプラグインが使えないということでしたので、
当該部分だけ静的HTMLにしてIncludeさせることで解決させました。

No.14 tak Author Profile Page: (無題)

初めてコメントさせて頂きます。
BlogPeople経由で相互リンクしていただき、ありがとうございます。

さて、MT3.34でこのプラグインを利用させていただいているのですが、質問があります。

最近のコメント/トラックバックが「あるかどうか」を判断する方法はありますでしょうか?
というのも、私のブログにはまだトラックバックが1件もなく(始めたばかりなので…)、現在は「最近のトラックバック」欄に空の UL リストがあるだけです。
このままだとValid XHTMLにならないので、トラックバックがある場合にのみこのリストを出力したいのです。
(トラックバックが1件でもつけば解消されるのですが(^^;))

ご教授頂ければ幸いです。よろしくお願い致します。

No.15  Author Profile Page: (無題)

>takさん
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、コメント/トラックバックが1つ以上あるかどうかを判断すれば良いので、最近のコメント/トラックバックを出力する処理をその条件で囲んで、以下のようにすけばよいと思います。

<MTIfNonZero tag="BlogCommentCount">
最近のコメントを出力する処理
</MTIfNonZero>
 
<MTIfNonZero tag="BlogPingCount">
最近のトラックバックを出力する処理
</MTIfNonZero>
No.16 tak Author Profile Page: (無題)

びっくりするほど素早いお返事ありがとうございます。

なるほど、そんなタグがあったのですね。
MTIfPinged とかかなぁ、と思って、それっぽいものを色々検索していました(^^;)

さっそく導入しようと思います。
これでValid XHTMLにすることができそうです。
ありがとうございます!

No.17 yuki : (無題)

perlダイナミックパブリッシングをはじめ、いろいろと利用させてもらっています。

一つ質問なのですが、名無しでコメントをした際にこのプラグインで表示を行うと、に何も表示されないのですが、名無しの場合は、特定の名前を表示させるということは可能でしょうか??

No.18 yuki : (無題)

自己解決しました。
default=""でできなくて質問したのですが、単なる記述ミスでした。。

失礼いたしました。

コメントする

管理者のみにコメントを送信したい場合は、「コメントを秘密にする」のチェックをオンにしてコメントを送信するか、メールフォームからメールをお送りください。

ブログ全体の感想など、この記事に直接に関係しないコメントは、ゲストブックにお気軽に投稿してください。


アーカイブ

ブログパーツ

ステータス