前回、「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/]に保存。
3.SimplePieコンバート用クラス(RssCustom)ダウンロードし、[rss_custom.php]とリネームし、[app/models]に保存。
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では動かないかも
- Newer: CakePHPでのマルチチェックボックス
- Older: CakePHP+Smarty+UTF-8におけるIEのレイアウト崩れ