2010-09-24 78 views
7

我想創建一個站點地圖,但我對Sitemaps的用法知之甚少。我使用CakePHP。谷歌和指南上有很多軟件,但我仍然想要問一個簡單的方法來爲CakePHP創建站點地圖。如何爲CakePHP創建站點地圖?

我上傳了網站上的服務器,它不依賴本地主機。

回答

12

這裏有一個例子quick'n'dirty你一起玩,並調整您的需求:

在你的控制器:

public $components = array('RequestHandler'); 

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

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

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

你的 「文章」 的模式:

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

查看:

<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

感謝例如 – meotimdihia 2010-09-25 20:48:06

+0

請記住在您的控制器(或AppController.php中爲應用程序範圍的訪問)添加公共'$ components = array('RequestHandler');'以使其正常工作。 – Coreus 2015-11-12 18:55:23

+0

@Coreus我已經更新了答案,謝謝! – 2015-11-13 21:32:54

4

這是一個良好的開端,現在只需加:

Router::parseExtensions('xml');到routes.php文件

從那裏,你想有這樣的路線:

Router::connect('/sitemap', array('controller' => 'posts' ....., 'ext' => 'xml')),將引導site.com/sitemap.xml到網站地圖所在的控制器/操作。

創建具有正確標題的XML佈局,移動視圖文件的意見/職位/ XML/file.ctp

+0

感謝很多評論 – meotimdihia 2010-09-29 13:53:07

+0

請檢查我的問題我做錯了,還有sitemap.xml空白文件? http://stackoverflow.com/questions/39099791/display-data-from-database-in-sitemap-xml-using-cakephp-2-0?noredirect=1#comment65552181_39099791 – 2016-08-23 14:43:50

3

更妙的是:添加Router::parseExtensions('xml');到routes.php文件(沒有錯字)