PR

[CakePHP] RSSを取得する

PHP で RSS を取得する方法は以前書きました:

pc.casey.jp » PHPでRSSを取得して表示する :
https://pc.casey.jp/archives/125

前回は magpierss を使って実装しましたが、今回は simplepie を使います。simplepie には CakePHP 用のComponent が用意されています。

スポンサードリンク

準備

  1. まず本体をダウンロードし、
  2. simplepie.inc を simplepie.php にして
  3. /app/vendors/simplepie/ に配置する。
  4. コンポーネントをダウンロードし、
  5. /app/controllers/components/ に配置する。
  6. /app/tmp/cache/rss/をキャッシュディレクトリとして作成しておく(たぶん書き込み権限必要)

テストしてみる

var $components = array('Simplepie');

function index(){
  $items = $this->Simplepie->feed("<a href="https://pc.casey.jp/feed">https://pc.casey.jp/feed</a>");
  debug($items);
}

エラーが出た

Fatal error: Call to undefined function vendor() in /app/controllers/components/simplepie.php on line 31

31行目は何だろう?

vendor('simplepie/simplepie');

CakePHP 1.1 から CakePHP 1.2 へアップグレードする際にここ変更になったんだよね。確か。
ということで、31行目をコメントアウトして、15行目くらいに以下を追加して解決。

App::import('Vendor', 'simplepie/simplepie');

文字が化けた

取得した文字が化けた。だいたいファイルそのものが原因だろうと思って調べると、 simplepie.php が SJIS + CRLF だったので、 UTF-8 + LF にして解決。

備考

※表示件数のカスタマイズ方法が参考文献で解説されています。必要になる機能だと思うので一度訪れておくと良いでしょう。
※執筆時 simplepie は Ver.1.2 だった。CakePHP は 1.2.4 でテストした。
※トップページに表示したり、elementにしてぺたぺた貼りたい場合はいかが参考になるのではないかと思います:

“トップページにランキングを出せますか?” フォーラム – CakePHP Users in Japan :
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=2382&forum=3

参考文献

ダウンロード

コメント