Movable Type 備忘録

 FeedEx プラグイン

  • Sep062008
  • Vote:
    http://bizcaz.com/archives/2008/09/06-103153.php
  • Categories: Customize
  • Tags: , ,
  • Social Bookmark

おはよございます^^

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 プラグインでは以下のようになります。

サンプル

  1. <?php
  2.     function print_new($date,$days=1)
  3.     {
  4.         $result = date("YmdHis", mktime(date("H"),date("i"),date("s"),date("m") ,date("d") - $days, date("Y")));
  5.         if ($date >= $result) print '<img src="<$MTBlogURL$>mt_memo/css/new.gif">';
  6.     }
  7. ?>
  8. <mt:SetVar name="feed[0]" value="http://feeds.feedburner.com/ogawa">
  9. <mt:SetVar name="feed[1]" value="http://feeds.feedburner.jp/koikikukan">
  10. <mt:SetVar name="feed[2]" value="http://www.h-fj.com/blog/atom.php">
  11. <mt:SetVar name="feed[3]" value="http://feeds.feedburner.jp/oraora">
  12. <mt:SetVar name="feed[4]" value="http://www.dakiny.com/index.xml">
  13. <mt:SetVar name="feed[5]" value="http://blog.aklaswad.com/atom.xml">
  14. <mt:SetVarBlock name="cnt"><mt:GetVar name="feed" function="count" value="1" op="-"></mt:SetVarBlock>
  15.  
  16. <mt:For var="i" from="0" to="$cnt">
  17.     <mt:SetVarBlock name="uri"><mt:GetVar name="feed[$i]"></mt:SetVarBlock>
  18.  
  19.     <dl class="mt_reader">
  20.     <MTFeedEx uri="$uri">
  21.         <dt><a href="<$MTFeedExLink$>"><$MTFeedExTitle$></a></dt>
  22.         <dd>
  23.             <ul>
  24.             <MTFeedExEntries lastn="3">
  25.             <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>
  26.             </MTFeedExEntries>
  27.             </ul>
  28.         </dd>
  29.     </MTFeedEx>
  30.     </dl>
  31. </mt:For>

青字の部分は記事の投稿日時をチェックして、NEW マークを表示する為の PHP コードになります。
ブログの PHP 化を行ってる人はそのまま使用できますが、PHP 化されてない人はエラーしてしまいますのでご注意ください。

赤字の部分では、MTFeed が MTFeedEx に変更になった部分です。

以上です。

 Trackback Pings(1)

from 小さな世界

Movable Typeは動的なファイル生成、静的ファイル生成ともに扱うことが可...

 Comments(24)

#1: Posted by Author Profile Page Kei @ September 6, 2008 [REPLY]
user-pic

こんにちはぁ^^

早々ダウンロードして設置したかったのですが。。。
プラグインデレクトリに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.

#2: Posted by Author Profile Page bzbellからKeiへの返信 @ September 6, 2008 [REPLY]
user-pic

>>1 Kei さん

こんにちわ^^

どうやら後から付け足した config.yaml 内の doc_link の記述が間違ってたみたいあせあせ
すいません。ありがとございますテレテレ

#3: Posted by Author Profile Page Kei @ September 14, 2008 [REPLY]
user-pic

こんばんわぁバイバイ
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」だったりで

アーカイブテンプレート、モジュールテンプレートと作成してみたのですが駄目でした
設置テンプレートと設定に何か問題あるのでしょうかね^^;

#4: Posted by Author Profile Page bzbellからKeiへの返信 @ September 14, 2008 [REPLY]
user-pic

>>3 Kei さん

こんばんわ^^

はい。実はわたしのところでも小粋空間さんのフィード読込むと同様の現象がでます。
断言はできないのですが CORESERVER のサイトだと再現するような気がしてます。またはフィード元さんで弾いてる!?

上記サーバを使ってるサイトさんのフィードを読込むとなぜか Perl ライブラリ内でエラーしてるようで、エラーするならそれでもいいんだけど、有無を言わさずそのエラーメッセージが表示されちゃいまして困ってるんですガーン
ちょっと前までは問題なく表示できたんですけどねぇ・・・突然のことで問題点を洗い出してるところです。

ご迷惑をおかけしますもじもじ

#5: Posted by Author Profile Page Keiからbzbellへの返信 @ September 14, 2008 [REPLY]
user-pic

>>4 bzbell さん
そうでしたかぁあせあせ
小粋空間さんのフィールドで「http://feedproxy.google.com/koikikukan」の方へ変更して
ウェブページ作成でやってみたらエラーはでませんでしたけども。
これではエラーの解決にはなりませんものね><
元の「http://www.koikikukan.com/atom.xml」ですと同じくエラーでましたので
難しいですね><

#6: Posted by Author Profile Page bzbellからKeiへの返信 @ September 14, 2008 [REPLY]
user-pic

>>5 Kei さん

> 小粋空間さんのフィールドで「http://feedproxy.google.com/koikikukan」の方へ変更して
> ウェブページ作成でやってみたらエラーはでませんでしたけども。
ホントだガーン
う~ん・・・原因がよく分からないなぁ。吐き出されるフィードの内容に問題があるのかしらはて?

#7: Posted by Author Profile Page Keiからbzbellへの返信 @ September 14, 2008 [REPLY]
user-pic

>>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

#8: Posted by Author Profile Page bzbellからKeiへの返信 @ September 14, 2008 [REPLY]
user-pic

>>7 Kei さん

> ・・・飛ぶと「http://feeds.feedburner.jp/koikikukan」にリダイレクト?になってるっぽいんです。

あぅ!? リダイレクト!?
そこら辺と何か関係してるのかもしれませんね。
仮にそれが原因だったとした場合、リダイレクト先のフィードを読込ませる必要がありそうですね。

ウェブページの件ですが、ウェブページの description メタタグには、記事内容の概要を表示するようにしてるんです。
なので、わたしのサイトではフィードページなど、文章がないページに関して「ウェブページ」アーカイブテンプレートを以下のように記述してます。

<mt:Ignore>ここでページタイトル名称と取得します</mt:Ignore>
<mt:SetVarBlock name="page_title"><$MTPageTitle encode_html="1"$></mt:SetVarBlock>
<mt:Ignore>ページタイトルが「リンク集」だった場合、ブログの概要を表示するよう分岐させてます
それ以外はウェブページ内の記事概要を表示させます</mt:Ignore>
<mt:If name="page_title" eq="リンク集">
<mt:SetVarBlock name="page_description"><$MTBlogDescription$></mt:SetVarBlock>
<mt:Else>
<mt:SetVarBlock name="page_description"><$MTPageExcerpt remove_html="1" convert_breaks="0"$></mt:SetVarBlock>
</mt:If>

上記はほんの一例ですが、このようなかんじで条件分岐させてます。
よく分からないようでしたら、メールフォームにて Kei さんとこの「ウェブページ」アーカイブテンプレートを添付して、弾きたいページタイトル名称を明記して頂ければ対応しますやあ!

#9: Posted by Author Profile Page Keiからbzbellへの返信 @ September 14, 2008 [REPLY]
user-pic

>>8 bzbell さん
にょ・・・
ウェブページ新規作成(記事と同じく)ではなくて。。テンプレートアーカイブの方での操作ですか!?
まったく脳みそがついてきておりませぬキャハハ

メール送ってみます><

#10: Posted by Author Profile Page bzbellからKeiへの返信 @ September 14, 2008 [REPLY]
user-pic

>>9 Kei さん

追加したものを Kei さん宅にお送りしましたのでご確認ください。

#11: Posted by Author Profile Page Keiからbzbellへの返信 @ September 14, 2008 [REPLY]
user-pic

>>10 bzbell さん
ありがとうございました^^
入れ替えて再構築しましたら直りました
お手数おかけしてすみませんでしたあせあせ

#12: Posted by 通りすがらない @ March 17, 2009 [REPLY]
user-pic

初めまして。FeedExを利用させていただこうとしています。
が、以下のようなエラーが出て使用できません。

failed loading package FeedEx::Plugin for routine FeedEx::Plugin::tag_feed: syntax error

MTのバージョンは4.24です。サーバはLinuxなので改行コードかと思い、
アスキーモードで転送してますがダメです。何が原因か判りますでしょうか?

#13: Posted by Author Profile Page bzbellから通りすがらないへの返信 @ March 17, 2009 [REPLY]
user-pic

>>12 通りすがらない さん

こんばんわ^^

断言できませんが、たぶん MTFeedEx ブロックタグに不正なパラメータが渡されたことによるエラー、または Feed モジュールの内部処理エラーではないかとあせあせ
  1. 何度再構築しても同じですか!?
  2. MT のログに何か残されてませんか!?
  3. 念のため確認しますが、プラグイン一覧には正しく表示されてますよね!?
  4. ウチは Movable Type Pro 4.24 で普通に使用できますが、MTOS を利用されてますか!?
    MTOS 上では未確認です。
#14: Posted by 通りすがらないからbzbellへの返信 @ March 18, 2009 [REPLY]
user-pic

>>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>

#15: Posted by Author Profile Page bzbellから通りすがらないへの返信 @ March 18, 2009 [REPLY]
user-pic

>>14 通りすがらない さん

こんばんわ^^

何だろ・・・原因が検討つかないですねあせあせ
ウチは Pro ですが Commercial でも基本は同じなので問題ないと思うんですよねぇ・・・ウチは問題なく使えてるので。

通りすがらない さんが、MTFeedEx をどのテンプレートで使われてるのか分かりませんが、たとえば適当なインデックステンプレート( test.html )を作成して、上記コードを再構築しても同様でしょうか。また、プラグイン一覧に表示された MTFeedEx プラグインが無効になってるってことはないですよね!?

#16: Posted by 通りすがらないからbzbellへの返信 @ March 19, 2009 [REPLY]
user-pic

>>15 bzbell さん
試しに別サーバにインストールされてるMT個人ライセンス版・4.24にインストールし、
だけを書いたテンプレートを作ってみましたが、
まったく同じ症状が出ました。こっちではできるだろうと踏んでいたのですが、予想外デス…。
インストールの仕方がまずいんでしょうか?
ただ単に [mt]/plugins/ に FeedEx/ をそのままアップロードして
(アップロード後は [mt]/plugins/FeedEx/ となる)います。
アスキー・バイナリー両方でアップロードしましたが…うーん。
Plugin.pm内のtag_feedにシンタックスエラーが出てるとありますが、
ただ単に一発目の読み込みから失敗してるだけでしょうし。困りました。

#17: Posted by Author Profile Page bzbellから通りすがらないへの返信 @ March 19, 2009 [REPLY]
user-pic

>>16 通りすがらない さん

こんにちわ^^

  1. プラグインに記述ミスなどによる不具合があった場合、まず MT の管理画面にも影響がでます。 そういったことがないようなので、プラグインはとりあえず正しく読込まれていると判断してます。

  2. エラー内容から、読込もうとしたフィードに問題!? があるように思います。 試しに別なサイトさんのフィードで確認してみてください。
    わたしの経験上、正しくないフィードを読込もうとすると何らかのエラーが発生してました。

    また、ウチで使ってるサーバの制約上、大きなサイズのフィードを読込もうとするとタイムアウトエラーが発生してるようでした。

    もし、読込もうとしたフィードに原因があった場合には、XML 解析モジュールの配布元さんにご連絡する必要があります。( 何らかの対応をして頂けると嬉しいブイブイ )
    その際にはフィードの URL を教えていただけますか。

というかんじでしょうか。
通りすがらない さんのインストール、タグには問題はなさそうなのでご心配なさらずにうぅ~ん

#18: Posted by 通りすがらないからbzbellへの返信 @ March 21, 2009 [REPLY]
user-pic

>>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 となってます。
こちらも揃えられた方がよろしいかと存じます。お知らせまで。

#19: Posted by Author Profile Page bzbellから通りすがらないへの返信 @ March 21, 2009 [REPLY]
user-pic

>>18 通りすがらない さん

こんばんわ^^

> 42行目の最後のセミコロン、いらないんじゃないですか?

あれっ!?
すいませんあせあせ
その不具合対応したはずなんですけど・・・UP してなかったみたいですね。
わたしが使ってるプラグインと同じものだと思ってたので、何でエラーするんだろ・・・と不思議には思ってたのですが納得しました。
お手数おかけしてすいませんでしたもじもじ

> こちらも揃えられた方がよろしいかと存じます。お知らせまで。

ありがとございます。
不具合といっしょに直しておきますやあ!

#20: Posted by nuts @ March 27, 2009 [REPLY]
user-pic

大変便利なプラグインをありがとうございます!
初歩的な質問をさせてください。
これはどのタイミングで反映されるのでしょうか。
リンクしてる外部ブログが更新されると自動で反映されるのでしょうか。
それとも自分のブログを再構築した際に最新情報が反映されるのでしょうか。

#21: Posted by Author Profile Page bzbellからnutsへの返信 @ March 27, 2009 [REPLY]
user-pic

>>20 nuts さん

こんばんわ^^

> それとも自分のブログを再構築した際に最新情報が反映されるのでしょうか。

はい。自分のブログを再構築した時に反映されます。
ですので、ウチではダイナミック・パブリッシングを使って定期的に再構築するようにしてます。

#22: Posted by T @ January 22, 2010 [REPLY]
user-pic

はじめまして。
このプラグイン日付を取得出来てとても重宝して使用しました。
今回のMT5にアップグレードしたら文字化けを起こしてしまいました。
このプラグインのバージョンアップはありますか。

#23: Posted by Author Profile Page bzbellからへの返信 @ January 23, 2010 [REPLY]
user-pic

>>22 T さん

こんにちわ^^

使って頂いてありがとですやあ!
エンコードの問題ですが、今調べてます。現状を言いますと、何で変換できないのか分からずにいますあせあせ
少々お待ち頂けますかぺこり

#24: Posted by Author Profile Page bzbellからへの返信 @ January 23, 2010 [REPLY]
user-pic

>>22 T さん

こんにちわ^^

MTFeedEx プラグイン、MT5.x に対応しましたので、よかったら使ってくださいぺこり使い方は従来と同様です。

 Post a Comment

 

コメント用フィード