[CakePHP] XMLサイトマップの出力

  1. app/controllers/内に、sitemap_controller.php を作成し、以下の内容を記述する。
    <?php
    class SitemapController extends AppController {
      var $components  = array('RequestHandler');
      var $helpers = array('Xml');
    
      function index() {
      }
    }
    ?>
  2. 拡張子が.xmlの場合、xml用の view が適用されるよう
    app/config/route.php内に以下の内容を記述する。

    Router::parseExtensions();
  3. app/views/layouts/xml/default.ctp に以下の内容を記述
    <?php
    echo $xml->header();//XML宣言を出力
    echo $content_for_layout;
    ?>
  4. 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" ?>';//これをビュー内に書くとエラーになるので書かないこと。
    ?>
  5. app/app_controller.php内に以下を書き、
    XMLのデバッグ・レベルをゼロにする。
    (.xmlの場合、SQLやエラーを出力しないようにする。)

    function beforeFilter(){
    	if($this->RequestHandler->isXml()){
    		Configure::write('debug',0);
    	}
    }
  6. http://www.hoge.com/sitemap.xmlにアクセスすると反映される。

参考URL
.htawさん
引用させていただきました。ありがとうございます。

こちらもあわせてどうぞ
  1. [CakePHP] 開発環境と本番環境で複数のデータベースを切り替える
  2. [CakePHP] ページングした際、ビュー内で4個ずつ表示
  3. [CakePHP] Qdmail(文字化けしない日本語メール)
  4. [CakePHP] Benchmarkコンポーネント(パフォーマンスの計測)
  5. [CakePHP] Formヘルパーの拡張
  6. [CakePHP] 動的にモデルで使用するテーブルを変更する
  7. [CakePHP] Debugkit(デバッグツール)
  8. [CakePHP] Textヘルパーの拡張
HatenaGoogle BookmarksYahoo BookmarksFacebook

コメントする

*