我想创建一个站点地图,但我对Sitemaps的使用知之甚少。我使用CakePHP。谷歌和指南上有很多软件,但我仍然想要问一下,为CakePHP创建站点地图的简单方法。
我在服务器上载了网站,它不依赖于localhost。
答案 0 :(得分:12)
这是一个快速的例子供您玩耍并根据您的需求进行调整:
在您的控制器中:
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 :(得分:4)
这是一个好的开始,现在只需添加:
Router::parseExtensions('xml');
到routes.php
从那里你想要一条路线:
Router::connect('/sitemap', array('controller' => 'posts' ....., 'ext' => 'xml'))
会将site.com/sitemap.xml指向站点地图所在的控制器/操作。
使用正确的标题创建xml布局,并将视图文件移动到views / posts / xml / file.ctp
答案 2 :(得分:3)
更好:将Router::parseExtensions('xml');
添加到routes.php(没有拼写错误)
答案 3 :(得分:0)
您可以按照以下步骤操作:
步骤 1. 为 XML 站点地图视图创建布局文件 sitemap.ctp
<?php
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
echo $this->fetch('content');
echo '</urlset>';
?>
第 2 步。为站点地图生成创建一个单独的控制器:
class SitemapsController extends AppController
{
public function index()
{
$this->viewBuilder()->setLayout('sitemap');
$this->RequestHandler->respondAs('xml');
$postTbl = TableRegistry::getTableLocator()->get('Posts');
$posts = $postTbl->find()->select(['slug']);
$this->set('posts', $posts);
//Get the base URL of your website
$url = Router::url('/', true);
$this->set('url', $url);
}
}
步骤 3. 为包含 XML 标签的索引操作创建一个视图文件:index.ctp
<url>
<loc><?= $url; ?></loc>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc><?= $url; ?>contact-us</loc>
<priority>0.5</priority>
</url>
<url>
<loc><?= $url; ?>above-us</loc>
<priority>0.5</priority>
</url>
<url>
<loc><?= $url; ?>service</loc>
<priority>0.5</priority>
</url>
<?php foreach($osts as $post){?>
<url>
<loc><?php echo $url.'blog/'.$post['slug'] ?></loc>
</url>
<?php } ?>
步骤 4. 在 routes.php 中为站点地图添加路由:
Router::scope('/', function (RouteBuilder $routes) {
// Other routes.
$routes->connect('/sitemap.xml',['controller'=>'Sitemaps','action'=>'index']);
});
有关详细教程,您可以visit this tutorial并逐步了解如何在 CakePHP 中创建 XML 站点地图。