2010-09-24 23 views
7

Chcę utworzyć mapę witryny, ale wiem bardzo niewiele o korzystaniu z map witryn. Używam CakePHP. Jest dużo oprogramowania w google i przewodnikach, ale mimo to nadal chcę pytać, o łatwy sposób tworzenia map witryn dla CakePHP.Jak utworzyć mapę witryny dla CakePHP?

Załadowałem stronę internetową na serwer, nie polega ona na localhost.

Odpowiedz

12

Oto przykład quick'n'dirty aby grać z i dostosować do własnych potrzeb:

W kontrolerze:

public $components = array('RequestHandler'); 

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

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

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

Twój "Artykuł" model:

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

Wyświetl:

<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

dzięki na przykład – meotimdihia

+0

Pamiętaj, aby dodać publiczną "$ components = array" ("RequestHandler"); "w kontrolerze (lub AppController.php dla dostępu do całej aplikacji), aby to działało. – Coreus

+0

@Coreus Zaktualizowałem odpowiedź, dzięki! –

4

To jest dobry początek, teraz wystarczy dodać:

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

stamtąd chcesz mieć trasy jak:

Router::connect('/sitemap', array('controller' => 'posts' ....., 'ext' => 'xml')) że skieruje do site.com/sitemap.xml kontroler/akcja, w której znajduje się mapa witryny.

utworzyć układ xml z właściwych pozycjach i przenieść plik widoku poglądów/posty/XML/file.ctp

+0

dziękuję za komentarz – meotimdihia

+0

proszę sprawdzić mój problem gdzie robię źle, a także pusty plik sitemap.xml? http://stackoverflow.com/questions/39099791/display-data-from-database-in-sitemap-xml-using-cakephp-2-0?noredirect=1#comment65552181_39099791 –

3

jeszcze lepiej: dodaj Router::parseExtensions('xml'); do routes.php (bez literówki)

Powiązane problemy