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]);
OR
$ bin/cake plugin load Sitemap -r
- Add list of tables to display Sitemap records via an array at
Sitemap.tables
Configure::write('Sitemap.tables', [
'Pages',
'Sites',
'Camps',
]);
- Add the
Sitemap.Sitemap
Behavior to each table as well
$this->addBehavior('Sitemap.Sitemap');
You can now access the sitemap at /sitemap.xml
.
- 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 theaddBehavior
method call for theTable
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 matchingTable
class.
public function getUrl(\Cake\ORM\Entity $entity) {
return \Cake\Routing\Router::url(
[
'prefix' => false,
'plugin' => false,
'controller' => $this->registryAlias(),
'action' => 'display',
$entity->display_id,
],
true
);
}
- To customize the templates used when displaying the Sitemap, the CakePHP Book provides information regarding overriding Plugin Templates.
This project has adopted the Contributor Covenant as its code of conduct. All contributors are expected to adhere to this code. Translations are available.
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 git@github.com:YOUR_USERNAME/CakePHP-Sitemap.git
$ 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.