公開されているWeb ModelsとRss Modelを利用すれば、RSSフィードをデータベースのように扱う事ができます。
1.Web Modelsをダウンロードし、web_model.phpという名前で[app/models]に保存。
2.Rss Modelをダウンロードし、rss.phpという名前で[app/models]に保存。
3.利用するコントローラー内に以下の一文を記述
var $uses = array('Rss');
4.RSS用のキャッシュフォルダを設置し、権限を777に変更
[app/tmp/cache/web/rss]
これで準備は終わりです。以下のように簡単にRSSフィードを読み込む事ができ、Viewに引き渡してやれば、View上で利用できます。
$feeds = $this->Rss->findAll('http://blog.non-style.com/index.xml' ,2, '+1 hour');
$this->set('feeds', $feeds);
第1引数:RSSフィードのURL
第2引数:取得件数
第3引数:RSSフィードのキャッシュを保持する期間
【Viewの例(Smartyを利用している場合)】
<ul>
{foreach from=$feeds.Items item=datas}
<li>
<p>{$datas.pubDate.value|date_format:"%Y. %m. %d"}</p>
<p><a href="{$datas.link.value}">{$datas.title.value}</a></p>
</li<
{/foreach}
</ul>
ただ、Web Modelsは[cURL]を利用していますので、[cURL]が利用できないサーバーでは使用する事はできません。
今回の制作で利用したpaperboyのレンタルサーバー「チカッパ」では[cURL]は利用できませんでした。
その対応策については次回書きます。
- Newer: CakePHP+RSS+SimplePie
- Older: CakePHP+Smarty+UTF-8におけるIEのレイアウト崩れ