Как создать файл Sitemap для CakePHP? - PullRequest
7 голосов
/ 24 сентября 2010

Я хочу создать карту сайта, но я очень мало знаю об использовании файлов Sitemap. Я использую CakePHP. В гугле и руководствах много программного обеспечения, но я все равно хочу спросить, есть ли простой способ создания карт сайта для CakePHP.

Я загрузил сайт на сервер, он не зависит от localhost.

Ответы [ 3 ]

12 голосов
/ 25 сентября 2010

Вот быстрый и полезный пример, с которым вы можете поиграть и приспособиться к вашим потребностям:

В вашем контроллере:

public $components = array('RequestHandler');

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

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

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

Ваша модель "Артикул":

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

Вид:

<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>
4 голосов
/ 29 сентября 2010

Это хорошее начало, теперь просто добавьте:

Router::parseExtensions('xml'); к rout.php

Оттуда вы хотите получить маршрут, подобный:

Router::connect('/sitemap', array('controller' => 'posts' ....., 'ext' => 'xml')) который направит site.com/sitemap.xml в контроллер / действие, в котором находится карта сайта.

создайте макет xml с правильными заголовками и переместите файл представления в views / posts / xml / file.CTP

3 голосов
/ 24 марта 2012

Еще лучше: добавьте Router::parseExtensions('xml'); в rout.php (без опечатки)

...