adnan0703/sitemap

CakePHP 的 Sitemap 插件

安装次数: 43

依赖: 0

建议者: 0

安全性: 0

星标: 2

关注者: 4

分支: 1

开放问题: 0

类型:cakephp-plugin

2.0 2017-01-04 08:48 UTC

This package is not auto-updated.

Last update: 2024-10-02 17:01:19 UTC


README

Build Status Coverage Status

Sitemap 插件是 CakePHP 对 Cartographer 库的封装。它使得生成 sitemap 非常简单。该 Sitemap 插件可以处理超过 50,000 个条目的 Sitemap。此外,它遍历表记录,而不是一次性检索所有记录。

需求

  • PHP 5.4+
  • CakePHP 3.0
  • Cartographer 库(作为 composer 依赖项包含)

安装

您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。

composer require adnan0703/Sitemap

如何使用它

例如,如果您想生成 Posts 模型的 sitemap,您需要在 Posts 表类中定义 sitemapQuery 方法,并在 Posts 模型实体类中定义 sitemapEntry 虚拟属性。必须返回 Query 对象的 sitemapQuery 方法,且 sitemapEntry 必须是包含至少 url 键的 array

使用 sitemapQuery 方法,您可以控制将被添加到 sitemap 的记录,使用 sitemapEntry 虚拟属性,您可以控制 sitemap 条目的属性。

// in Posts table class
public function sitemapQuery()
{
	return $this->find()
		->select(['id', 'name'])
		->where(['published' => true]);
}
// in Posts entity class
protected function _getSitemapEntry() 
{
	return [
		'url' => $url, // required
		'changefreq' => 'weekly', // optional
		'priority' => '0.8', // optional
	];
}

现在我们可以像下面的代码所示生成 Posts 模型的 sitemap。

set_time_limit(60*10); // if you have lots of records
$models = ['Posts'];
$dirPath = WWW_ROOT . DS . 'sitemaps';
$sitemap = new \Adnan0703\Sitemap\Lib\Sitemap();
$mainSitemap = $sitemap->createSitemap(
	$dirPath, 
	'http://example.com/sitemaps/', 
	$models, 
	true
);
// $mainSitemap will be 'http://example.com/sitemaps/sitemap.xml'

您也可以将 Pages 控制器的 URL 和其他 URL 添加到 sitemap 中。

Configure::write('Sitemap.pages', [
	[
		'url' => Router::url(['controller' => 'Pages', 'action' => 'home'], true), 
		'priority' => '0.9', 
		'changefreq' => 'daily'
	],
	[
		'url' => Router::url(['controller' => 'Pages', 'action' => 'about_us'], true), 
		'priority' => '0.9', 
		'changefreq' => 'daily'
	],
]);

配置选项

Sitemap 插件有两个配置选项:Sitemap.pagesSitemap.findLimit。上述已解释 Sitemap.pages 选项。使用 Sitemap.findLimit,您可以在遍历表时限制 Sitemap 每次检索的记录数。

Configure::write('Sitemap.findLimit', 600);

支持

对于错误和功能请求,请使用此存储库的 issues 部分。

为此插件做出贡献

请随时为此插件贡献新问题、请求、单元测试、代码修复或新功能。

许可

版权所有 2015,Adnan Aslam

许可协议:The MIT License。文件重新分发必须保留上述版权声明。