2012-06-25 27 views
18

Necesito generar un mapa del sitio en una aplicación Codeigniter. Encontré algunas bibliotecas, pero todas están desactualizadas y tienen errores.Generación del sitemap con Codeigniter

¿Realmente necesito una biblioteca separada para esto?

Quiero saber la mejor manera de generar el mapa del sitio en Codeigniter.

Respuesta

49

Puede usar mi código: Línea

controladores/seo.php

Class Seo extends CI_Controller { 

    function sitemap() 
    { 

     $data = "";//select urls from DB to Array 
     header("Content-Type: text/xml;charset=iso-8859-1"); 
     $this->load->view("sitemap",$data); 
    } 
} 

vistas/sitemap.php

<?= '<?xml version="1.0" encoding="UTF-8" ?>' ?> 

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
     <loc><?= base_url();?></loc> 
     <priority>1.0</priority> 
    </url> 

    <!-- My code is looking quite different, but the principle is similar --> 
    <?php foreach($data as $url) { ?> 
    <url> 
     <loc><?= base_url().$url ?></loc> 
     <priority>0.5</priority> 
    </url> 
    <?php } ?> 

</urlset> 

añadir a config/routes.php

$route['seo/sitemap\.xml'] = "seo/sitemap"; 

Disculpe si hay alguna er rors en el código, lo hice especialmente para ti. Si hay errores, puede solucionarlos fácilmente entendiendo el principio.

+0

Gracias! Agradable y fácil :) –

+1

¿Qué hay de múltiples sitemaps si tienes muchas páginas/artículos? – starikovs

+2

¿Por qué esta parte: '' En echo? –

13

Debe cabecera de set:

<?php header('Content-type: text/xml'); ?> 
<?= '<?xml version="1.0" encoding="UTF-8" ?>' ?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
     <loc><?= base_url();?></loc> 
     <priority>1.0</priority> 
    </url> 
    <!-- My code is looking quite different, but the principle is similar --> 
    <?php foreach($data as $url) { ?> 
    <url> 
     <loc><?= base_url().$url ?></loc> 
     <priority>0.5</priority> 
    </url> 
    <?php } ?> 
</urlset> 
3

Es muy recomendable añadir el enlace del mapa de sitio para el robots.txt así:

Sitemap: http://www.yoursite.com/seo/sitemap 
1

He escrito un modelo CodeIgniter que permitió para llamar a funciones desde un controlador de mapa de sitio y escupir el XML cuando haya terminado de alimentar el mapa del sitio.

No dude en echar un vistazo y volver a utilizar el modelo de CodeIgniter:

https://github.com/alphabase/CodeIgniter-Sitemap-Generator