2010-09-24 31 views
7

Quiero crear un mapa del sitio, pero sé muy poco sobre el uso de Sitemaps. Yo uso CakePHP. Hay un montón de software en google y guías, pero todavía quiero preguntar de todos modos, para una manera fácil de crear mapas de sitio para CakePHP.¿Cómo crear un Sitemap para CakePHP?

Cargué el sitio web en el servidor, no depende de localhost.

Respuesta

12

Aquí está un ejemplo quick'n'dirty para jugar con y ajustar a sus necesidades:

En su controlador:

public $components = array('RequestHandler'); 

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

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

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

Su modelo de "artículo":

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

Ver:

<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

gracias para ejemplos – meotimdihia

+0

Recuerde agregar '$ components = array (' RequestHandler '); público en su controlador (o AppController.php para acceso a toda la aplicación) para que esto funcione. – Coreus

+0

@Coreus He actualizado la respuesta, ¡gracias! –

4

Eso es un buen comienzo, ahora sólo tiene que añadir:

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

Desde allí se quiere tener una ruta como:

Router::connect('/sitemap', array('controller' => 'posts' ....., 'ext' => 'xml')) que dirigirá a site.com/sitemap.xml el controlador/acción donde está el mapa del sitio.

crear un diseño xml con los títulos correctos, y mover el archivo de vista de vistas/mensajes/xml/file.ctp

+0

gracias un comentario montón – meotimdihia

+0

compruebe mi problema donde estoy haciendo mal y también el archivo en blanco sitemap.xml? http://stackoverflow.com/questions/39099791/display-data-from-database-in-sitemap-xml-using-cakephp-2-0?noredirect=1#comment65552181_39099791 –

3

Aún mejor: añadir a Router::parseExtensions('xml'); routes.php (sin el error tipográfico)