Movable Type 備忘録
FeedEx プラグイン
- Prev Page: dTree テンプレット
- Next Page: FeedburnerWidget プラグイン
おはよございます^^
Movable Type で RSS リーダー作ってみるでご紹介しました自作 RSS リーダーですが、FeedEx プラグインを作成することでわたしなりの機能を達成できたのでそのプラグインをご紹介します。
最初、デフォルトの MTFeed を日時、記事概要を取得できるようにカスタマイズしようとしたのですが、調べてる内に MTFeed というのは有償版ってのもあるらしく、有償版で投稿日時、記事概要が使えるようになってるみたいなんです。
そんな MTFeed をカスタマイズしてしまうとまずいのでは・・・ということで、プラグインを別途作ることで対応してみました。
FeedEx プラグインのカンタンな説明
一応 RSS1.0、RSS2.0、ATOM0.3、ATOM1.0 に対応してます。
また、FeedEx プラグインをインストールすると以下のタグが追加されます。
MTFeedEx ブロックタグ
MTFeedEx に uri モディファイアでフィード URL を指定することで、各フィード情報を読み出すことができます。
MTFeedExTitle ファンクションタグ
フィード URL で指定したサイトタイトルを取得します。MTFeedEx ブロックタグ内で使用します。
MTFeedExLink ファンクションタグ
フィード URL で指定したサイト URL を取得します。MTFeedEx ブロックタグ内で使用します。
MTFeedExEntries ブロックタグ
フィード内のアイテム情報( 記事情報 )を取得するためのブロックタグです。MTFeedEx ブロックタグ内で使用します。
MTFeedExEntryTitle ファンクションタグ
アイテム情報( 記事情報 )の中のタイトル( 記事タイトル )を取得します。MTFeedExEntries ブロックタグ内で使用します。
MTFeedExEntryLink ファンクションタグ
アイテム情報( 記事情報 )の中の URL ( 記事の URL )を取得します。MTFeedExEntries ブロックタグ内で使用します。
MTFeedExEntryDate ファンクションタグ
アイテム情報( 記事情報 )の中の投稿日時を取得します。MTFeedExEntries ブロックタグ内で使用します。
MTFeedExEntryDescription ファンクションタグ
アイテム情報( 記事情報 )の中の記事概要を取得します。MTFeedExEntries ブロックタグ内で使用します。
ダウンロード
以下のページから最新版をダウンロードできます。
使い方
上記ページから FeedEx プラグインをダウンロードして頂き、いつものように mt/plugins/ フォルダ内に FeedEx/ フォルダを丸ごとアップロードします。
使い方はデフォルトの MTFeed と同様です。
Movable Type で RSS リーダー作ってみるでご紹介してるコードは MTFeedEx プラグインでは以下のようになります。
サンプル
<?phpfunction print_new($date,$days=1){$result = date("YmdHis", mktime(date("H"),date("i"),date("s"),date("m") ,date("d") - $days, date("Y")));if ($date >= $result) print '<img src="<$MTBlogURL$>mt_memo/css/new.gif">';}?><mt:SetVar name="feed[0]" value="http://feeds.feedburner.com/ogawa"><mt:SetVar name="feed[1]" value="http://feeds.feedburner.jp/koikikukan"><mt:SetVar name="feed[2]" value="http://www.h-fj.com/blog/atom.php"><mt:SetVar name="feed[3]" value="http://feeds.feedburner.jp/oraora"><mt:SetVar name="feed[4]" value="http://www.dakiny.com/index.xml"><mt:SetVar name="feed[5]" value="http://blog.aklaswad.com/atom.xml"><mt:SetVarBlock name="cnt"><mt:GetVar name="feed" function="count" value="1" op="-"></mt:SetVarBlock><mt:For var="i" from="0" to="$cnt"><mt:SetVarBlock name="uri"><mt:GetVar name="feed[$i]"></mt:SetVarBlock><dl class="mt_reader"><MTFeedEx uri="$uri"><dt><a href="<$MTFeedExLink$>"><$MTFeedExTitle$></a></dt><dd><ul><MTFeedExEntries lastn="3"><li><a href="<$MTFeedExEntryLink$>" style="display:block;"><$MTFeedExEntryTitle$> <?php print_new(<$MTFeedExEntryDate format="%Y%m%d%H%M%S"$>); ?></a><$MTFeedExEntryDate format_name="rfc822"$></li></MTFeedExEntries></ul></dd></MTFeedEx></dl></mt:For>
青字の部分は記事の投稿日時をチェックして、NEW マークを表示する為の PHP コードになります。
ブログの PHP 化を行ってる人はそのまま使用できますが、PHP 化されてない人はエラーしてしまいますのでご注意ください。
赤字の部分では、MTFeed が MTFeedEx に変更になった部分です。
以上です。
Trackback Pings(1)
- from
小さな世界
Movable Typeは動的なファイル生成、静的ファイル生成ともに扱うことが可...


こんにちはぁ^^
早々ダウンロードして設置したかったのですが。。。
プラグインデレクトリにFeedExフォルダ入れるとエラーきました^^;
内容です
Got an error: Error reading /mt/plugins/FeedEx/config.yaml: YAML::Tiny does not support multi-line quoted scalars at /mt/extlib/YAML/Tiny.pm line 159.
>>1 Kei さん
こんにちわ^^
どうやら後から付け足した config.yaml 内の doc_link の記述が間違ってたみたい
すいません。ありがとございます
こんばんわぁ

FeedExプラグイン挑戦中です^^
プラグインの方でのエラーではないと思うのですが。
PureKeiで設置を試みたところ再構築でエラー発生してしまって設置できまぬ
なぜだかわからずで><
まずは、こちらのコード(そのままコピペ)でやってみたのですが
エラー内容
Invalid feed source: http://feeds.feedburner.jp/koikikukan at /mt/plugins/FeedEx/lib/FeedEx/Plugin.pm line 42
と、再構築画面で出ました。
数日前に設置試みた時は「http://feeds.feedburner.jp/koikikukan」の部分が「http://blog.aklaswad.com/atom.xml」だったりで
アーカイブテンプレート、モジュールテンプレートと作成してみたのですが駄目でした
設置テンプレートと設定に何か問題あるのでしょうかね^^;
>>3 Kei さん
こんばんわ^^
はい。実はわたしのところでも小粋空間さんのフィード読込むと同様の現象がでます。
断言はできないのですが CORESERVER のサイトだと再現するような気がしてます。またはフィード元さんで弾いてる!?
上記サーバを使ってるサイトさんのフィードを読込むとなぜか Perl ライブラリ内でエラーしてるようで、エラーするならそれでもいいんだけど、有無を言わさずそのエラーメッセージが表示されちゃいまして困ってるんです
ちょっと前までは問題なく表示できたんですけどねぇ・・・突然のことで問題点を洗い出してるところです。
ご迷惑をおかけします
>>4 bzbell さん
そうでしたかぁ
小粋空間さんのフィールドで「http://feedproxy.google.com/koikikukan」の方へ変更して
ウェブページ作成でやってみたらエラーはでませんでしたけども。
これではエラーの解決にはなりませんものね><
元の「http://www.koikikukan.com/atom.xml」ですと同じくエラーでましたので
難しいですね><
>>5 Kei さん
> 小粋空間さんのフィールドで「http://feedproxy.google.com/koikikukan」の方へ変更して
> ウェブページ作成でやってみたらエラーはでませんでしたけども。
ホントだ
う~ん・・・原因がよく分からないなぁ。吐き出されるフィードの内容に問題があるのかしら
>>6 bzbell さん
小粋空間さんのRSSと言うアイコンは「http://www.koikikukan.com/atom.xml」でリンクが貼られていて、飛ぶと「http://feeds.feedburner.jp/koikikukan」にリダイレクト?になってるっぽいんです。
あと。。違う問題なのですが
ウェブページでリーダーページ作成したのですが
メタタグでNewアイコンの呼び出し?なりますよね
そのタグの後に、「 '..." /> 」 がくっついちゃうのです。
ソースで見ると
<meta name="description" content="= $result) print 'mt_memo/css/new.gif">'..." />
となってます
ページで見ると1番上に '..." /> が表示されまして。。
これはどうしたらよいのでしょうか><
作成したウェブページです http://ke-i-s.net/reader.php
>>7 Kei さん
> ・・・飛ぶと「http://feeds.feedburner.jp/koikikukan」にリダイレクト?になってるっぽいんです。
あぅ!? リダイレクト!?
そこら辺と何か関係してるのかもしれませんね。
仮にそれが原因だったとした場合、リダイレクト先のフィードを読込ませる必要がありそうですね。
ウェブページの件ですが、ウェブページの description メタタグには、記事内容の概要を表示するようにしてるんです。
なので、わたしのサイトではフィードページなど、文章がないページに関して「ウェブページ」アーカイブテンプレートを以下のように記述してます。
上記はほんの一例ですが、このようなかんじで条件分岐させてます。
よく分からないようでしたら、メールフォームにて Kei さんとこの「ウェブページ」アーカイブテンプレートを添付して、弾きたいページタイトル名称を明記して頂ければ対応します
>>8 bzbell さん
にょ・・・
ウェブページ新規作成(記事と同じく)ではなくて。。テンプレートアーカイブの方での操作ですか!?
まったく脳みそがついてきておりませぬ
メール送ってみます><
>>9 Kei さん
追加したものを Kei さん宅にお送りしましたのでご確認ください。
>>10 bzbell さん
ありがとうございました^^
入れ替えて再構築しましたら直りました
お手数おかけしてすみませんでした
初めまして。FeedExを利用させていただこうとしています。
が、以下のようなエラーが出て使用できません。
failed loading package FeedEx::Plugin for routine FeedEx::Plugin::tag_feed: syntax error
MTのバージョンは4.24です。サーバはLinuxなので改行コードかと思い、
アスキーモードで転送してますがダメです。何が原因か判りますでしょうか?
>>12 通りすがらない さん
こんばんわ^^
断言できませんが、たぶん MTFeedEx ブロックタグに不正なパラメータが渡されたことによるエラー、または Feed モジュールの内部処理エラーではないかとMTOS 上では未確認です。
>>13 bzbell さん
返信ありがとうございます。
1. 何度やっても同じです。テンプレートにタグを書き、「保存と再構築」を押すと前記のエラーが出ます。
その後、プラグインを削除しない限り、テンプレートの編集画面へさえ戻れません。
ずっと同じエラーが出たままです。プラグインを削除後に編集画面へ戻ると、
「<MTFeedEx>は存在しません」というエラーが出ます(当然ですが)。
タグが残っていることから、保存をしてからのちにエラーが出てるようです。
最初、<mt:FeedEx>という記法にしてましたのでそのせいかと思いましたが、
<MTFeedEx>にしても同じです。
2. ログには何も残っていません。
3. 「ブログ」のプラグイン一覧には出ませんが、「システムメニュー」のプラグイン一覧には出てます。
ただ、FeedEx-0.03.zipをインストールしましたが、バージョンは0.02と出てます。
4. Commercial(正規購入版)です。
以下に使用しているタグをそのまま記載します。細部は違っていますが、
タグの利用方法はそのままです。
<MTFeedEx uri="http://...">
<a href="<$MTFeedExLink$>"><$MTFeedExTitle$></a>
<MTFeedExEntries lastn="1">
[<$MTFeedExEntryDate$>]
<a href="<$MTFeedExEntryLink$>"><$MTFeedExEntryTitle$></a>
</MTFeedExEntries>
</MTFeedEx>
>>14 通りすがらない さん
こんばんわ^^
何だろ・・・原因が検討つかないですね
ウチは Pro ですが Commercial でも基本は同じなので問題ないと思うんですよねぇ・・・ウチは問題なく使えてるので。
通りすがらない さんが、MTFeedEx をどのテンプレートで使われてるのか分かりませんが、たとえば適当なインデックステンプレート( test.html )を作成して、上記コードを再構築しても同様でしょうか。また、プラグイン一覧に表示された MTFeedEx プラグインが無効になってるってことはないですよね!?
>>15 bzbell さん
試しに別サーバにインストールされてるMT個人ライセンス版・4.24にインストールし、
だけを書いたテンプレートを作ってみましたが、
まったく同じ症状が出ました。こっちではできるだろうと踏んでいたのですが、予想外デス…。
インストールの仕方がまずいんでしょうか?
ただ単に [mt]/plugins/ に FeedEx/ をそのままアップロードして
(アップロード後は [mt]/plugins/FeedEx/ となる)います。
アスキー・バイナリー両方でアップロードしましたが…うーん。
Plugin.pm内のtag_feedにシンタックスエラーが出てるとありますが、
ただ単に一発目の読み込みから失敗してるだけでしょうし。困りました。
>>16 通りすがらない さん
こんにちわ^^
プラグインに記述ミスなどによる不具合があった場合、まず MT の管理画面にも影響がでます。 そういったことがないようなので、プラグインはとりあえず正しく読込まれていると判断してます。
エラー内容から、読込もうとしたフィードに問題!? があるように思います。 試しに別なサイトさんのフィードで確認してみてください。
わたしの経験上、正しくないフィードを読込もうとすると何らかのエラーが発生してました。
また、ウチで使ってるサーバの制約上、大きなサイズのフィードを読込もうとするとタイムアウトエラーが発生してるようでした。
もし、読込もうとしたフィードに原因があった場合には、XML 解析モジュールの配布元さんにご連絡する必要があります。( 何らかの対応をして頂けると嬉しい
)
その際にはフィードの URL を教えていただけますか。
というかんじでしょうか。
通りすがらない さんのインストール、タグには問題はなさそうなのでご心配なさらずに
>>17 bzbell さん
あのー、バグを発見しましたが…。
lib/FeedEx/Plugin.pm の42,43行目、
my $feed = XML::FeedPP->new($uri);
or return $ctx->error("Invalid feed source [$uri]");
42行目の最後のセミコロン、いらないんじゃないですか?
これ取り除いたらあっさり稼働しました(笑)。
あとついでにですが、パッケージのバージョンが 0.03 ですが
config.yaml には 0.02 となってます。
こちらも揃えられた方がよろしいかと存じます。お知らせまで。
>>18 通りすがらない さん
こんばんわ^^
> 42行目の最後のセミコロン、いらないんじゃないですか?
あれっ!?
すいません
その不具合対応したはずなんですけど・・・UP してなかったみたいですね。
わたしが使ってるプラグインと同じものだと思ってたので、何でエラーするんだろ・・・と不思議には思ってたのですが納得しました。
お手数おかけしてすいませんでした
> こちらも揃えられた方がよろしいかと存じます。お知らせまで。
ありがとございます。
不具合といっしょに直しておきます
大変便利なプラグインをありがとうございます!
初歩的な質問をさせてください。
これはどのタイミングで反映されるのでしょうか。
リンクしてる外部ブログが更新されると自動で反映されるのでしょうか。
それとも自分のブログを再構築した際に最新情報が反映されるのでしょうか。
>>20 nuts さん
こんばんわ^^
> それとも自分のブログを再構築した際に最新情報が反映されるのでしょうか。
はい。自分のブログを再構築した時に反映されます。
ですので、ウチではダイナミック・パブリッシングを使って定期的に再構築するようにしてます。
はじめまして。
このプラグイン日付を取得出来てとても重宝して使用しました。
今回のMT5にアップグレードしたら文字化けを起こしてしまいました。
このプラグインのバージョンアップはありますか。
>>22 T さん
こんにちわ^^
使って頂いてありがとです

エンコードの問題ですが、今調べてます。現状を言いますと、何で変換できないのか分からずにいます
少々お待ち頂けますか
>>22 T さん
こんにちわ^^
MTFeedEx プラグイン、MT5.x に対応しましたので、よかったら使ってください
使い方は従来と同様です。