2010-09-24 5 views
7

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

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

ответ

12

Вот пример quick'n'dirty для вас, чтобы играть и приспособиться к вашим потребностям:

В контроллере:

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> 
+1

спасибо для примеров – meotimdihia

+0

Не забудьте добавить публичный '$ components = array (' RequestHandler ');' в вашем контроллере (или AppController.php для доступа к общему доступу), чтобы это работало. – Coreus

+0

@Coreus Я обновил ответ, спасибо! –

4

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

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

Оттуда вы хотите иметь маршрут как:

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

создать макет XML с правильными заголовками, и переместить файл на просмотр просмотров/сообщений/XML/file.ctp

+0

большое спасибо – meotimdihia

+0

, пожалуйста, проверьте мою проблему где я делаю неправильно, а также файл sitemap.xml пустой? http://stackoverflow.com/questions/39099791/display-data-from-database-in-sitemap-xml-using-cakephp-2-0?noredirect=1#comment65552181_39099791 –

3

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

Смежные вопросы