2010-09-24 16 views
7

Voglio creare una mappa del sito, ma so molto poco sull'utilizzo delle Sitemap. Io uso CakePHP. C'è molto software su google e guide, ma voglio comunque chiedere comunque, per un modo semplice per creare sitemap per CakePHP.Come creare una Sitemap per CakePHP?

Ho caricato il sito Web sul server, non si basa su localhost.

risposta

12

Ecco un esempio quick'n'dirty per voi a giocare con e di adeguarsi alle vostre esigenze:

Nel vostro controller:

public $components = array('RequestHandler'); 

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

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

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

Il tuo "articolo" modello:

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

View:

<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

grazie per esempi – meotimdihia

+0

Ricordare di aggiungere public '$ components = array (' RequestHandler ');' nel proprio controller (o AppController.php per l'accesso a tutto l'app) affinché funzioni. – Coreus

+0

@Coreus Ho aggiornato la risposta, grazie! –

4

Questo è un buon inizio, ora basta aggiungere:

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

Da lì si desidera avere un percorso simile:

Router::connect('/sitemap', array('controller' => 'posts' ....., 'ext' => 'xml')) che site.com/sitemap.xml dirigerà a il controllore/azione in cui si trova la mappa del sito.

creare un layout xml con i titoli corretti, e spostare il file al fine di vista/messaggi/xml/file.ctp

+0

grazie molto commento – meotimdihia

+0

si prega di controllare il mio problema dove sto facendo male e anche il file vuoto sitemap.xml? http://stackoverflow.com/questions/39099791/display-data-from-database-in-sitemap-xml-using-cakephp-2-0?noredirect=1#comment65552181_39099791 –

3

Ancora meglio: aggiungi Router::parseExtensions('xml'); a routes.php (senza l'errore di battitura)

Problemi correlati