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(3)
- from
小さな世界
Movable Typeは動的なファイル生成、静的ファイル生成ともに扱うことが可...
- from
開発者ブログ
MTOSではMTFeedが使えません。 今回はMTOSでMTFeedと同じことを出来るようにする方法です。 通常版のMTに付属してくるMTFeedは有料版...
- from
45式::雑記
run-periodic-tasks経由で再構築する際にFeeds.App Liteが原因で妙なメッセージが出るようになりました。 手っ取り早い対策として...




こんにちはぁ^^
早々ダウンロードして設置したかったのですが。。。
プラグインデレクトリに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 に対応しましたので、よかったら使ってください
使い方は従来と同様です。
FeedExプラグインなんですが、文字化けしてしまいます。
それ以外は、問題無く動作をしております。
当方の動作環境はMTOS5.01に最新版であろう0.07をインストールしています。
取得しているFeedは、Feedburnerです。
試しにATOMで行ってみたのですが、文字化けします。
過去コメントで解決した感じに取れるので、
MTOSだけで文字化けが起こっているのでしょうか。
解決方法をご教授ください。
>>25 naganaga さん
こんにちわ^^
文字化けですか
naganaga さんがお使いの MTOS の文字コードは UTF-8 でしょうか。
ちょと確認したいのですが plugins/FeedEx/lib/FeedEx/Plugin.pm 内の 183 行目を以下のように変更して再構築して頂けますか。
その結果をご連絡頂けたらと思います
フィードを受信している側も、送信している側も、文字コードはUTF-8を使っています。プラグインも、変更して再構築をかけてみましたが、文字化けは相変わらずです。
当方が何か単純なミスをしている可能性もありますので、該当部分のリストを添付しておきます。
このリストは、MTOS4ではちゃんと表示していました。
>>27 naganaga さん
こんにちわ^^
使い方的には問題なさそうですね。
trim_to が原因…てことはないですよね
実は MTOS での動作確認ってやってなく、たぶん動くだろう…くらいにしか思ってませんでした。
MTOS 5 のコードを DL して動作確認してみます。
ご迷惑をお掛けしますが少しお待ちください
こんばんわ。
まさに探していたソフトです!
が、しかし・・・。以下のようなエラーがでます。
普通のMTFeedを使った場合は問題なく表示されましたので、feed自体は問題なさそうです。
もちろんMTはプラグインを認識しています。バージョンは4.27です。
何かヒントをいただけないでしょうか??
failed loading package FeedEx::Plugin for routine FeedEx::Plugin::tag_feed: "utf8_off" is not exported by the MT::I18N module Can't continue after import errors
>>29 メンソレータム さん
こんばんわ^^
MT::I18N モジュールの utf8_off は外部公開されてない!?…みたいなこと言ってますね。
MT4.27 ですか…では、ちょと自信ないのですが、以下のファイルを上書きして確認してみて頂けますか。
plugins/FeedEx/lib/FeedEx/Plugins.pm
よろしくお願いします
初めまして、こんにちは、朝之丞と申します。
実は故あって、
「ブロガーズ・ネットワーク 翼」 始める予定です
http://tomono10g.com/2010/05/24/%E3%80%8C%E3%83%96%E3%83%AD%E3%82%AC%E3%83%BC%E3%82%BA%E3%83%BB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-%E7%BF%BC%E3%80%8D-%E5%A7%8B%E3%82%81%E3%82%8B%E4%BA%88%E5%AE%9A%E3%81%A7%E3%81%99/
Movable Type 5(ポータル) + TypePad Pro(ブロガー個別)と言う運用のため、
TypePad ProのRSSを、貴殿が作成したFeedEXプラグインを利用させて頂き、実現しております。
http://bloggers-network283.com/
未だ、構築中です。
一つご質問させて頂きたいのですが(素人っぽい質問で申し訳御座いませんが)、
MTFeedExEntryDescription
で取得出来る 記事概要 をもう少し長い文章を取得したいのですが、何か与えるパラメータはあるのでしょうか?
お忙しいとは存じますが、是非ご教示頂きたく、お願い申し上げます。
>>30bzbellさん
こんにちは☆お返事遅れて申し訳御座いません。
アップロードして頂いたファイルを上書きしたら無事うまくいきました!!
本当に有難う御座います!!!
それにしても良いプラグインを有難う御座います。
応援しています!!
>>31 朝之丞 さん
こんばんわ^^
特にそのような取得制限は設けてません。
確認したところ、MT でいうところの MTEntryBody で出力される内容はすべて表示されてます。
たぶん、参照されてるサイトさんのフィードで表示文字数の制限をかけられてるのではないでしょうか。試しに RSS リーダーでそのフィードを読ませてみるといいのココロ
>>32 メンソレータム さん
こんばんわ^^
うまくいったようですね。
よかったです
今後ともどうぞよしなに
はじめまして。
便利なプラグインをありがとうございます。
ひとつ、伺いたいことがあります。
ブラウザでソースを見てみると取り込んだ文字列がすべて数値文字参照になっています。
そのため regex_replace などで日本語を指定しても変換されないみたいです。
将来的には読み込んだRSSをエントリに書き出すことを考えているのですが、
エントリ文字がすべて数値文字参照になってしまうと検索機能も使えないのでどうしようかと困っています。
ソース上でも数値文字参照ではなく普通の文字列で表示されるようにするにはどうすればよいのでしょうか。
お忙しいところすみませんがどうぞよろしくお願いいたします。
>>35 kimura さん
はじめまして^^
このブログで確認したところ、数値文字参照にはなってないようです。- http://bizcaz.com/archives/reader/
普通にテキストとして変換されてるようです。 お手数ですが、メールフォームにて kimura さんが作られましたコードとその現象が確認できるページの URL を送っていただけますか。 実際に見てみたいです>>36 bzbell さん
どうやらツイッターのRSSを読み込むと、この現象が起きるようです。
例 無印良品のツイッターのRSS
http://twitter.com/statuses/user_timeline/43255797.rss
ここのページ自体のソースが数値文字参照になっていました。
どうにか読める文字で表示したいです。なにか対策はありますでしょうか。
ためしに別のフィード(個人ブログ)を読み込んでみましたら普通に読める文字列で表示されました。
コードは上記 MTFeedExプラグインサンプルからPHPのコ-ドを除いたものを使用しています。
今は、自宅windowsサーバーでMTサイトを構築中なのでページをみていただくことができません。
すみません。
どうぞよろしくお願いいたします。
すばらしいプラグインをありがとうございます。
質問ですが、
複数のブログをFeedExで最新記事順に並べ替えるにはどうすればよいのでしょうか?
サンプルでは
Aブログ
・Aプログの最新記事3つ
Bブログ
・Bプログの最新記事3つ
Cブログ
・Cプログの最新記事3つ
ですが、
Aプログの最新記事1つ
Bプログの最新記事1つ
Cプログの最新記事1つ
を最新順に自動で並べ替えて表示する方法はありますでしょうか?
方法があればご教授頂ければと思います。
よろしくお願い致します。
>>38 かんぴょ さん
こんにちわ^^
ご質問の件ですが、以下のようにすれば全ブログの最新順にソートして表示することができます。
上記コードをカンタンに説明すると、以上、ざっくりですがこんなことやってます。
お試しあれぇ~
お盆でお忙しい中、本当にありがとうございました。
試してみました!
うまく出来ました(o^∇^o)ノ
解説まで付けていただいてありがとうございます。
とはいえ、ちんぷんかんぷんですが、
がんばって少しずつ勉強してみます。
ふたたび、すみません。
上のやり方の応用で、
10つのブログを登録しておいて、
更新日付の新しい順に5つのブログの記事を抽出するにはどうすればよろしいでしょうか?
いろいろ試してみたのですが、どうしてもできません。
お時間のあるときに教えていただけると助かります。
よろしくお願いいたします。
>>41 かんぴょ さん
こんにちわ^^
返事が遅くなりすいません。
ご質問の件ですが、けっこう面倒なことされるんですね
確認はしてませんが、以下のようにすればいいのではないでしょうか。
ありがとうございました。
返信が遅くなってすみません。
ようやく成功できました。
すばらしいです。
ありがとうございました