Home > CakePHP | PHP > CakePHP+RSS+SimplePie

CakePHP+RSS+SimplePie

  • Posted by: エガシラリュウジ
  • 2007年6月20日 11:28
  • CakePHP | PHP

前回、「CakePHP+WebModels+RssModels」は、[cURL]が利用できないサーバーでは利用できないという事を言ってましたが、今回は、その対応策について書きます。

 

PHPの[cURL]を利用しないRSSフィード読み込みクラスとして「SimplePie」がありますので、今回これを利用します。


ただ、これもCybozuの方が書いてあるように読み込んだ後の処理が結構大変です。

>> http://labs.cybozu.co.jp/blog/tsuruoka/anubis/blog_show/14


「WebModels+RssModel」のように、Smartyにポーンと渡せる形式でデータが返ってくればいいのですが、クラスのメソッド処理が必要だったりするんです。


今回は、「WebModels+RssModel」と「SimplePie」を有効に利用する為、「RssModel」を継承させつつ「SimplePie」を利用できるコンバート用のクラスを設置する事にします。

 


【以下手順】
1.「CakePHPでRSSフィードの読み込み」を参考に「WebModels+RssModel」を設置。


2.SimplePieをダウンロードし、[simplepie.inc]を[simplepie.php]とリネームし、[app/vendor/]に保存。

SimplePie ダウンロードページ


3.SimplePieコンバート用クラス(RssCustom)ダウンロードし、[rss_custom.php]とリネームし、[app/models]に保存。

RssCustom ダウンロード


4.利用するコントローラー内に以下の一文を記述

var $uses = array('RssCustom');


 
これで準備は終わりです。「WebModels+RssModel」と同じようにRSSフィードを読み込む事ができ、Viewに引き渡してやれば、View上で利用できます。
その際、[cURL]が利用できれば、「WebModels」でRSSフィードを取得し、利用できなければ、「SimplePie」にてRSSフィードを取得するようになっています。

$feeds = $this->Rss->findAll('http://blog.non-style.com/index.xml' ,2, '+1 hour','INFOMATION');

$this->set('feeds', $feeds);

第1引数:RSSフィードのURL
第2引数:取得件数
第3引数:RSSフィードのキャッシュを保持する期間
第4引数:カテゴリで抽出する場合のカテゴリ名(今回追加しました)


viewでの利用方法は、「CakePHPでRSSフィードの読み込み」を参照してください。


注)試していませんが、atomでは動かないかも

Comments:0

コメントフォーム

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Trackbacks:0

TrackBack URL for this entry
http://blog.non-style.com/mt/mt-tb.cgi/34
Listed below are links to weblogs that reference
CakePHP+RSS+SimplePie from Webプログラマの苦悩

Home > CakePHP | PHP > CakePHP+RSS+SimplePie

Links
Search
Feeds
Tag Cloud

Return to page top