2012-06-25 22 views
18

ho bisogno di generare una mappa del sito in un Codeigniter applicazione. Ho trovato alcune librerie ma tutte sono obsolete e hanno un bug.Sitemap generazione con Codeigniter

Ho davvero bisogno di una libreria separata per questo?

Desidero conoscere il modo migliore per generare la sitemap in Codeigniter.

risposta

49

È possibile utilizzare il mio codice: linea

controllori/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); 
    } 
} 

viste/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> 

metti in config/routes.php

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

Scusate se ci sono alcuni er nel codice, l'ho fatto apposta per te. Se ci sono errori, è possibile correggerli facilmente comprendendo il principio.

+0

Grazie! Bello e facile :) –

+1

Che dire di più sitemap se hai un sacco di pagine/articoli? – starikovs

+2

Perché questa parte: '' In eco? –

13

Deve impostare intestazione:

<?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

E 'fortemente raccomandato di aggiungere il link del sito per il file robots.txt in questo modo:

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

Ho scritto un modello di CodeIgniter che ha permesso per chiamare le funzioni da un controller Sitemap e sputare fuori l'XML quando hai finito di alimentare la mappa del sito.

Sentitevi liberi di avere uno sguardo e riutilizzare il modello CodeIgniter:

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