CakePHP

CakePHPでRSSを出力してみる

2013/05/24

相変わらずCakePHPは1.3の話ですが、調べましたところ、2系統でも同じっぽいです(未確認)。

  • URLは http://your-domain.com/products/productrss.rss とした場合にRSSが表示される
  • 詳細ページのURLは http://your-domain.com/products/detail/*** ***はIDとする

を前提とします。

単純な形で出すとして、ステップとしては5つです。

STEP1、Router に parseExtensions を追加する

app/config/routes.php に次の1行を記述。

STEP2、対象コントローラーのコンポーネントに RequestHandler を組み込む

対象コントローラ、今回の場合だと(products_controller)で、下記を記述。

STEP3、RSS用のレイアウトファイルを設置

コア側のレイアウトファイル /cake/libs/views/layouts/rss/default.css を、/app/views/layouts/rss にコピー。
内容はそのままで構いません。

STEP4、RSS用のアクションを作成

前提に則って、/app/controllers/products_controller.php に、productrss アクションを作成。
ここでは単に最新10件を取得して表示するだけとします。

STEP5、RSS用のビューを作成

内容は以下のような感じで。

拡張子を .rss とはせずに、通常のビューファイルと同じ .ctp で、設置先を、/app/views/products/rss/ とするところがミソ。
ファイル名は当然アクションと同じなので、 productrss.ctp とします。

以上で作成は完了。
http://your-domain.com/products/productrss.rss にアクセスすれば RSS が作成されているはずです。

注意

/app/config/core.php のデバッグ設定ですが、通常作成時などは

のようにし、デバッグしながらだと思いますが、RSS配信時は 0 にしておかないと、RSSに余計なものが混ざり、きちんと生成できません。
開発時でも RSS 作成テスト時は 0 にしておきましょう。
本番環境は無論、0 です。

以上、CakePHP1.3 でお手軽に RSS配信する場合の手順でした。

[tgAmazonItemLookup asin="4774153249" related="1"]

[tgAmazonItemLookup asin="B005JHKT3M" related="1"]

-CakePHP
-,