adnan0703 / sitemap
Sitemap plugin for CakePHP
Installs: 45
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 1
Open Issues: 0
Type:cakephp-plugin
pkg:composer/adnan0703/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: 2025-10-15 21:40:30 UTC
README
The Sitemap plugin is a CakePHP wrapper around Cartographer library. It makes it very easy to generate sitemap. The Sitemap plugin can handle Sitemaps of more than 50,000 entries. Also it iterates over table records instead of retrieving all records at once.
Requirements
- PHP 5.4+
- CakePHP 3.0
- Cartographer Library (included as composer dependency)
Installation
You can install this plugin into your CakePHP application using composer.
composer require adnan0703/Sitemap
How to use it
For example if you want to generate sitemap of Posts model, you need to define sitemapQuery method in Posts table class
and sitemapEntry virtual property in entity class of Posts model. The sitemapQuery method must return Query object and
sitemapEntry must be an array containing at least url key.
With sitemapQuery method you can control records that will be added to sitemap and with sitemapEntry virtual property
you can control properties of sitemap entry.
// 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 ]; }
Now we can generate sitemap of Posts model as shown in code below.
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'
You can also add Pages controller urls and other urls in 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' ], ]);
Configuration Options
Sitemap plugin has two configuration options.
Sitemap.pages and Sitemap.findLimit. Sitemap.pages option has been explained above. With Sitemap.findLimit you can
limit the number of records Sitemap retrieves at a time while iterating over table.
Configure::write('Sitemap.findLimit', 600);
Support
For bugs and feature requests, please use the issues section of this repository.
Contributing to this Plugin
Please feel free to contribute to the plugin with new issues, requests, unit tests and code fixes or new features.
License
Copyright 2015, Adnan Aslam
Licensed under The MIT License Redistributions of files must retain the above copyright notice.