How to create a Sitemap for CakePHP?

允我心安 提交于 2019-12-04 21:53:19

问题


I want to create a sitemap, but I know very little about the usage of Sitemaps. I use CakePHP. There is a lot software on google and guides, but I still want ask anyway, for an easy way to create sitemaps for CakePHP.

I uploaded the website on the server, it doesn't rely on localhost.


回答1:


Here's a quick'n'dirty example for you to play with and adjust to your needs:

In your controller:

public $components = array('RequestHandler');

public function sitemap()
{
    Configure::write('debug', 0);

    $articles = $this->Article->getSitemapInformation();

    $this->set(compact('articles'));
    $this->RequestHandler->respondAs('xml');
}

Your "Article" model:

public function getSitemapInformation()
{
    return $this->find('all', array(/* your query here */));
}

View:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <?php foreach ($articles as $article): ?>
    <url>
        <loc><?php echo Router::url(/* generate the URLs here */); ?></loc>
        <lastmod><?php echo $time->toAtom(/* last update time here */); ?></lastmod>
        <changefreq>weekly</changefreq>
    </url>
    <?php endforeach; ?>
</urlset>



回答2:


That is a good start, now just add:

Router::parseExtensions('xml'); to routes.php

From there you want to have a route like:

Router::connect('/sitemap', array('controller' => 'posts' ....., 'ext' => 'xml')) that will direct site.com/sitemap.xml to the controller/action where the sitemap is.

create a xml layout with the correct headings, and move the view file to views/posts/xml/file.ctp




回答3:


Even better: add Router::parseExtensions('xml'); to routes.php (without the typo)



来源:https://stackoverflow.com/questions/3789841/how-to-create-a-sitemap-for-cakephp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!