Kei's blog

開発やゲームなど好きなことを書いていく

cakephp3でsitemap.xml作成

いろんなサイトを見てきたが、自分が求めてるものと違ってたので書きました。

itmesの中身と TabelNameをコンテンツのテーブル に書き換えれば、使えます。

        $xml_head = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><urlset></urlset>";
        $xml = new SimpleXMLElement($xml_head);
        $xml->addAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');

        $itmes = [
            ['url' => "url_1"],
            ['url' => "url_2"],
            ['url' => "url_3"],
            ['url' => "url_4"],
        ];

        $tab_data = $this->TabelName->find();
        foreach ($tab_data as $data) {
            $itmes[]['url'] = "{$data->id}";
        }

        foreach ($itmes as $itme) {
            $urlSxe = $xml->addChild('url');
            $urlSxe->addChild('loc', $itme['url']);
        }

        $this->response->body($xml->asXML());

$this->TabelName、各コンテンツ配下にあるアイテムなどある場合は使ってください。 全部直接書くよ!ってかたは,下記を消してください。

        $tab_data = $this->TabelName->find();
        foreach ($tab_data as $data) {
            $itmes[]['url'] = "{$data->id}";
        }