Generate HTML and XML sitemaps for your CakePHP application.
Latest commit 8d52d91 Nov 11, 2016 @justinyost justinyost committed on GitHub Merge pull request #40 from ciricihq/b/xml-serialization
Fix xml serialization
Failed to load latest commit information.
config Add Basic XML Sitemap Support May 27, 2016
src Fix xml serialization to load the given XML template Nov 10, 2016
.editorconfig Add An Editorconfig File For Plugin Jan 20, 2016
.gitignore Add Gitignore for Plugin Jan 20, 2016
.travis.yml Add Email Address for COC May 26, 2016 Update Readme and License May 26, 2016
composer.json Remove Composer Plugin API May 27, 2016
phpunit.xml.dist Base Behavior In Progress Jan 22, 2016


Latest Version Build Status Coverage Status Software License Total Downloads

The Sitemap provides a mechanism for displaying Sitemap style information (the url, change frequency, priority and last modified datetime) for a set of Tables that CakePHP has access to.


  • CakePHP 3.0.0+
  • PHP 5.6+


$ composer require loadsys/cakephp_sitemap

In your config/bootstrap.php file, add:

Plugin::load('Sitemap', ['bootstrap' => false, 'routes' => true]);


$ bin/cake plugin load Sitemap


  • Add list of tables to display Sitemap records via an array at Sitemap.tables
Configure::write('Sitemap.tables', [
  • Add the Sitemap.Sitemap Behavior to each table as well


  • Default configuration options for the Sitemap Behavior is:
'cacheConfigKey' => 'default',
'lastmod' => 'modified',
'changefreq' => 'daily',
'priority' => '0.9',
'conditions' => [],
'order' => [],
'fields' => [],
'implementedMethods' => [
    'getUrl' => 'returnUrlForEntity',
'implementedFinders' => [
    'forSitemap' => 'findSitemapRecords',
  • To modify these options for instance to change the changefreq when listing records, update the addBehavior method call for the Table in question like so:
$this->addBehavior('Sitemap.Sitemap', ['changefreq' => 'weekly']);
  • To customize the url generated for each record create a method named getUrl in the matching Table class.
public function getUrl(\Cake\ORM\Entity $entity) {
    return \Cake\Routing\Router::url(
            'prefix' => false,
            'plugin' => false,
            'controller' => $this->registryAlias(),
            'action' => 'display',
  • To customize the templates used when displaying the Sitemap, the CakePHP Book provides information regarding overriding Plugin Templates.


Code of Conduct

This project has adopted the Contributor Covenant as its code of conduct. All contributors are expected to adhere to this code. Translations are available.

Reporting Issues

Please use GitHub Isuses for listing any known defects or issues.


When developing this plugin, please fork and issue a PR for any new development.

Set up a working copy:

$ git clone
$ cd CakePHP-Sitemap/
$ composer install
$ vendor/bin/phpcs --config-set installed_paths vendor/loadsys/loadsys_codesniffer,vendor/cakephp/cakephp-codesniffer

Make your changes:

$ git checkout -b your-topic-branch
# (Make your changes. Write some tests.)
$ vendor/bin/phpunit
$ vendor/bin/phpcs -p --extensions=php --standard=Loadsys ./src ./tests

Then commit and push your changes to your fork, and open a pull request.




Loadsys Web Strategies 2016