44 mcRSSlist Plugin
May 3, 2005. Tags: WordPress.Description
RSS feedからitemへのlink listを生成するpluginです。はてなRSSなどのアグリゲータサービスを利用してblogrollを出力することもカンタンです。このサイトのサイドバーの「del.icio.us/matopc」や「matopc :: blogrolling」リスト、さらにdel.icio.usページ、antennaページ(はてなアンテナベース)をこのpluginで生成しています。
Specification
- WordPress 1.5以降に対応。WordPress 2.9で動作確認。
- エンジンとしてWordPress 1.5以降に含まれている
/wp-includes/rss-functions.phpを使っています。Magpie RSS ベースなので機能的に申し分なく、さらにcacheはMySQL databaseに格納するようにhackされています。:grin: - RSS 0.92, 1.0, 2.0に対応
- 取得するtag
- channel - title, link, description
- item - title, link, description, pubDate/dc:date, author/dc:creator
- 日付のフォーマットはRFC 822形式 (Tue, 10 May 2005 13:19:24 +0000)とW3C/ISO8601形式 (2005-04-28T19:25:30+01:00) をtimestampに変換してリフォーマットすることが出来ます。
- 最終的なlistの出力フォーマットはいくつか準備したものを設定で切り替えることにしました。もちろんplugin本体をいじればどんなフォーマットも可ですが。
Download version 0.4 (2006-01-08)
Version History
- 0.1 (2005-05-20) initial release
- 0.1.1 (2005-05-24) minor bug fix
- 0.1.2 (2005-05-26) minor bug fix
- 0.1.3 (2005-06-06) minor bug fix
- 0.2 (2005-09-15) minor optimization, added output style
0.3 (2005-11-22)fixed error handling issue, added feed validation 'dot'- 0.4 (2006-01-08) minor fix, OK for WordPress 2.9
Known Issue
/wp-includes/rss-functions.phpのエラーハンドリングが不十分で、feedが壊れている場合などにphpエラーが出てしまう場合があります。コード修正で対応出来ますので、rss-functions.phpのエントリをご参照ください。
[3057] (changeset) - WordPress Trac - TracとしてWordPress側でrss-functions.phpが修正されたので、このエントリの修正は不要となります。
References:
[3057] (changeset) - WordPress Trac - Trac
#1446 (break when can't get RSS) - WordPress Trac - Trac
Install
/wp-content/pluginに設置- Plugins管理パネルでactivate
How to use it
このpluginはfunction mcRSSlist ()を追加します。
$num_items = 10,
$style = 0,
$ordered = false,
$show_channel_title = true,
$date_format = 'm/d H:i',
$before_channel_title = '<h2>',
$after_channel_title = '</h2>',
$mb_encoding = false);
- $feed_uri - RSS feedのURI
- $num_items - 取得するitemの数、default = 10
- $style - listの出力フォーマットを指定
- 0 (default) - 「itemへのリンク」(改行)「日付」「creator」。sidebarのblogrollでの使用を想定しています。
- 1 - 「itemへのリンク」「description」「creator」。del.icio.usでの使用を想定しています。サンプルページ:http://matopc.myvnc.com/delicious/
- 2 - 「日付」「itemへのリンク」「description」「creator」。アンテナ風のフォーマットです。サンプルページ:http://matopc.myvnc.com/antenna/
- 3 - 「itemへのリンク」のみ。いじってみてください。
- $ordered (boolean) - <ul> (false)または<ol> (true)でwrapします。
- $show_channel_title - trueで$before_channel_title (default '<h2>'), $after_channel_title (default '</h2>')でwrapされたfeed channelのtitleを出力します。
- $date_format - 日付のフォーマットを指定します。phpのdate機能を参照してください。
- $mb_encoding - feedが文字化けする場合、trueにしてみてください。PHPの
mb_convert_encoding ()を使ってencodingを自動認識、WordPressのget_settings('blog_charset')で指定された文字コードに変換します。
Examples
ペベリンスキーズBLOG v.2 » mcRSSlist pluginとその利用。
Thanks!
このサイトのmainページ、サイドバーのblogrollは、はてなRSSサービスのfeedを取得しています。
<?php mcRSSlist ('http://r.hatena.ne.jp/matopc/rss', 15); ?>
</li>
カンタンでしょう?:grin:
同じくdel.icio.usページも。style 1を使っています。
Advanced Settings
Cacheの寿命
define('MAGPIE_CACHE_AGE', 60*60);
デフォルトは1時間です。cacheのデータはMySQL databaseのwp_optionsテーブルに格納されます。
Output Style
switch ($style) {
case 0: // default sidebar style
$RSSlist .= $itemTitle . '<br /> ' . $itemDate . ' by ' . $itemCreator;
break;
case 1: // del.icio.us style.
$RSSlist .= $itemTitle . ' - ' . $itemDescription . ' by ' . $itemCreator;
break;
case 2: // antenna style
$RSSlist .= $itemDate . " » " . $itemTitle;
break;
case 3: // your style - now simple
$RSSlist .= $itemTitle;
break;
} // end switch - STOP EDITING
$styleで指定するスタイルはここで定義しています。ここに出てくる変数、$itemTitle(リンク)、$itemDescription、$itemDate、$itemCreatorを使ってアウトプットスタイルを設定できます。
Acknowledgement
WordPress、Magpie RSS、RSS Fetched Link List plugin開発者の皆様に感謝します。

見つけていただいて、ホントありがとうございます。 ->KOHAKUさん
動作の確認や不具合など、なんでもお知らせいただければありがたいです。よろしくお願いします。:grin:
こんにちは。
現在は好調に動作してます。:grin:
Pluginつかっていただいてどうもありがとうございます。
ChannelへのリンクでURIのquotationが欠けていたので修正しました(v0.1.3)。
今後もよろしくおねがいいたします。
こんにちは。
mcRSSlist plugin、試させていただいていますsasagawaです。とても素晴らしいpluginを提供してくださって心から感謝しています。また先日は文字化けの件、対応ありがとうございました。TRUEに設定するのを忘れていました。文字化けは解消致しました!
さて、もう一つ問題が起きていまして、アンテナのRSS取得の際に、サブディレクトリーを指定すると必ずエラーになってしまうのです。いろいろ試していますが、今のところ必ずそうなるようなので偶然ではないようです。例えば、以下は私のアンテナのurlですが、
http://r.hatena.ne.jp/sasagawa/rss
これを、
http://r.hatena.ne.jp/sasagawa/inbox/rss
として、mcRSSlistに設定すると、ブログ内ではエラーが発生してしまっている状況です。試しにmatopcさんのアンテナのurlでもinbox/rssとして試させていただいたのですが、エラーになりました。まだはっきりと確証があるわけではありませんが、現状のところご連絡させて頂きました。もし解決方法に思い当たることがありましたらコメントをお願い致します。それでは失礼致します。:wink:
こんにちは。お使いいただいてどうも!
文字化けは解決できたようで良かったです。:grin:
>エラー
Fatal error: Call to undefined function: error() in /.../rss-functions.php on line ...こんなエラーだと思うのですが、これははてなrssのサブフォルダ指定などにかかわらず、feedの内容が壊れている場合にxmlパースの途中で出ているようです。feedのエラーチェックとして完全ではないかもしれませんが、Feed Validatorなどで(feed item=購読中のコンテンツ)に依存してfeedが壊れている場合がないかチェックしてみて頂けないでしょうか?
一方で、エラーの内容はrss-functions.phpで定義されているハズのerror () functionが未定義としてエラーになっているようです。このエラーはWordPressサポートフォーラムでも取り上げられていたのですが、結局はエラーハンドリングがうまく出来ていない訳なので、rss-functions.phpをいじるかプラグインの方でどうにかしてoverrideするか、と僕もちょっと考えていたところです。
正しいxmlで生成されているfeedであればエラーは出ないハズなので、少々ご辛抱ください。。:wink:
->当面の対策法をアップしました。
> エラーの内容はrss-functions.phpで定義されているハズのerror () functionが未定義としてエラーになっているようです。
WordPress 2.0で修正されましたので、mcRSSlist 0.4をお使いの場合、他のファイルの修正は不要になりました。:grin:
初めまして。
どうも文字化けが解消できないのでご相談させてください。
サイトの charset が UTF-8 の場合には問題ないのですが、EUC の場合ですと、日本語が文字化けしちゃいます。
試しに、mb_convert_encoding の部分を、auto から EUC-JP (5箇所とも)に変更してみたのですが、状況は改善されないようです。
ならばと思い、強引に $charset を UTF-8 に。
ファイルの属性も併せて、UTF-8 にしてみましたが、やっぱりダメでした。
もし、改善策などがありましたら、ご教授頂けると幸いです。
よろしくお願い致します。:oops:
初めまして。お試し頂いてありがとうございます。
確認ですが、Feedの文字コードがUTF-8で表示させるサイトがEUC-JPということでよろしいでしょうか。もう一点、pluginの設定
mcRSSlist ('feed_url', 10, 0, 0, 1, 'm/d H:i', '<h2>', '</h2>', 0);の最後のフラグがmb_convert_encoding用なのですが、1またはtrueを指定頂いていますでしょうか。
なかなか難問かもしれません。。:???:
はじめまして、最近SBからWordPressに移行し現在色々なプラグインを物色しております。こちらのmcRSSlist Pluginも早速使用させていただきましたおかげでBookMarkの管理が非常に楽になりました。ありがとうございます。
ところで、一点だけ質問なのですが、ターゲットを_blankに指定することは可能でしょうか?
現在の仕様ですとリンク先をクリックするとよそへ跳んで行ってしまうので、できれば別画面へ表示されるようにカスタマイズしたいのですが・・・。
Pentaさん、ご使用いただいてありがとうございます。お返事遅れてすみません。
リンクを_blankに指定することも可能です。現時点での仕様ではXHTML 1.0 strictに準拠するためにaタグ内でrel="external"と指定して、javascriptを介してblankページに表示させるようにしています。javascriptファイルをWordPressトップページと同じディレクトリに置いて、htmlヘッダで指定する、という風に実現しているのですが、詳しくはこのエントリをご参照ください。
XHTML仕様を気にしなければtarget="_blank"で良いので、mcRSSlist.php内のrel="external"をtarget="_blank"に書き換えてもらえば動くと思います。:grin:
ダメそうなら教えてください。
matopcさん
こちらこそお礼が遅くなりまして申し訳ありません。数日前にこちらへアクセスした時、ーバーの移動をされた直後だったためか、トップページ以外には入れずにおりました。失礼をおゆるしください。
で、教えていただいた通り、javascriptファイルを設置することで、見事、blankページへ飛ばすことができるようになりました。ありがとうございます。
wordpressのリンクタグもデフォルトがselfに飛ぶようになっているのもこれで解消されてしまうのですね。タグファイルの書き換えをせずにすんでとても助かります。懇切丁寧な説明と、スクリプトの配布、ありがとうございました。:o
Pentaさん、うまく動いたようでヨカッタです。
サーバはいったん元に戻して再構築中ですが、移転は当分先になりそうな予感です。。
またどうぞ。
del,icio.usからrssを読み込みたいのですが文字化けします。wordpressは2.3、UTF-8で動かしています。mb_convert_encoding ()も指定してみましたが効果はありませんでした。よろしくお願いします。
Abeさん、お試しいただいてありがとうございます。
この点は僕も問題を認識していたのですが、まだ解決できていないのです。
Del.icio.usのRSSと例えばはてなRSSのソースを見比べて頂くとわかるのですが、del.icio.usのRSS feedは日本語の部分をユニコード形式の文字コードで送ってきます。これをmcRSSlistの方で日本語に戻すことが出来ていないことになります。以前は日本語も問題なく表示できていたので、del.icio.usの仕様が変更になったのかもしれません。
僕自身もdel.icio.usを使っているので修正したいのは山々なのですが、mcRSSlistでは/wp-includes/rss-functions.phpの機能を使っているので、どこで介入するか少々考える必要がありそうです。すみませんが宿題にさせてください。
matopcさん、すばらしいプラグインありがとうございます
早速使用させていただき、とても快適だったのですが、gooブログのRSSを取り込もうとしたら、Currently unavailable: http://blog.goo.ne.jp/****/index.rdf
と、出てしまいます。
取り込めるフィードと比較してみたら、一行目が
(取り込めるRSS)
(gooブログのRSS)
でした。
これは、
部分が邪魔していて取り込めないのでしょうか?
対策方法がありましたら、お教えください。
どうぞよろしくお願いいたします。
先ほどは失礼いたしました。violetです。
コード部分をそのまま書いてしまい消えてしまいました。
----------------------
(取り込めるRSS)
<?xml version="1.0" encoding="utf-8" ?>
(gooブログのRSS)
<?xml version="1.0" encoding="utf-8" ?><?xml-stylesheet
href="/css/user.xsl" type="text/xsl" media="screen"?>
----------------------
mcRSSlist Pluginが一番使いやすい
非常に有用なプラグインをありがとうございます。
なんとかテンプレートタグ等でできないものかと頑張ってみたんですが、
力及ばず…。
早速使わせていただきます!ありがとうございます!
勉強になりました!
ありがとう御座います!
このプラグインを探していました!早速使わせていただいてます。ありがとうございます。
ところですこしご教示いただけないでしょうか。
キャッシュの寿命をかなり短くして(10秒程度)使用した場合、
手動で蓄積するデータのメンテナンスをする必要がでますか?
サイト更新してないんですが0.4MB/1day程度でデータ量が増えてるみたいで・・・
bowzさん:
matopcです。お使い頂いてありがとうございます。
MySQLデータベースではwp_optionsというテーブルにデータがキャッシュされます。1 Feed URL当たり1レコードでデータが記録されますが、Feedの数とFeedのデータ量に依存してデータベースのデータ量が決まり、書き換え頻度で増える訳ではないはずです。
bowzさんが登録しているFeedが何件くらいのサマリーを吐き出しているか、ブラウザでみてみると参考になるかもしれません。
ただし、mcRSSlistプラグインでは、使わなくなったFeed URLのデータも残る仕様ですので、phpMyAdminなどが使えるようでしたら、注意してFeedデータをクリアしてみるとよいかと思います。
ありがとうございます!
別の要因でデータ増量していたみたいで・・・
丁寧に返答いただいてありがとうございました。
たまにphpMyAdminでチェックしてみます。