Movable Type 備忘録

 FeedEx プラグイン

おはよございます^^

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(11)

#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 さん
ありがとうございました^^
入れ替えて再構築しましたら直りました
お手数おかけしてすみませんでしたあせあせ

 Post a Comment

 

コメント用フィード