adnan0703 / sitemap
CakePHP 的 Sitemap 插件
Requires
- php: >=5.4
- cakephp/cakephp: ~3.0
- league/flysystem: 0.4.*
- tackk/cartographer: 1.0.*
Requires (Dev)
- cakephp/cakephp-codesniffer: dev-master
- phpunit/phpunit: *
This package is not auto-updated.
Last update: 2024-10-02 17:01:19 UTC
README
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.pages
和 Sitemap.findLimit
。上述已解释 Sitemap.pages
选项。使用 Sitemap.findLimit
,您可以在遍历表时限制 Sitemap 每次检索的记录数。
Configure::write('Sitemap.findLimit', 600);
支持
对于错误和功能请求,请使用此存储库的 issues 部分。
为此插件做出贡献
请随时为此插件贡献新问题、请求、单元测试、代码修复或新功能。
许可
版权所有 2015,Adnan Aslam
许可协议:The MIT License。文件重新分发必须保留上述版权声明。