- app/controllers/内に、sitemap_controller.php を作成し、以下の内容を記述する。
<?php class SitemapController extends AppController { var $components = array('RequestHandler'); var $helpers = array('Xml'); function index() { } } ?> - 拡張子が.xmlの場合、xml用の view が適用されるよう
app/config/route.php内に以下の内容を記述する。Router::parseExtensions();
- app/views/layouts/xml/default.ctp に以下の内容を記述
<?php echo $xml->header();//XML宣言を出力 echo $content_for_layout; ?>
- app/views/sitemap/xml/index.ctp を作成して、XMLの内容を書き込む。
以下のように記述するとXMLの階層化を自動的におこなってくれるので便利。<entries> <?php echo $xml->serialize($data); ?> </entries>
(注)レイアウト内でXML宣言を出力しているので、ビュー内にXML宣言を書くとエラーになる。
<?php echo '<?xml version="1.0" encoding="UTF-8" ?>';//これをビュー内に書くとエラーになるので書かないこと。 ?>
- app/app_controller.php内に以下を書き、
XMLのデバッグ・レベルをゼロにする。
(.xmlの場合、SQLやエラーを出力しないようにする。)function beforeFilter(){ if($this->RequestHandler->isXml()){ Configure::write('debug',0); } } - http://www.hoge.com/sitemap.xmlにアクセスすると反映される。
参考URL
.htawさん
引用させていただきました。ありがとうございます。