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_sitemapIn 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.SitemapBehavior to each table as well
$this->addBehavior('Sitemap.Sitemap');You can now access the sitemap at /sitemap.xml.
- Default configuration options for the
SitemapBehavior 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
changefreqwhen listing records, update theaddBehaviormethod call for theTablein question like so:
$this->addBehavior('Sitemap.Sitemap', ['changefreq' => 'weekly']);- To customize the url generated for each record create a method named
getUrlin the matchingTableclass.
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 [email protected]:YOUR_USERNAME/CakePHP-Sitemap.git
$ cd CakePHP-Sitemap/
$ composer install
$ vendor/bin/phpcs --config-set installed_paths vendor/loadsys/loadsys_codesniffer,vendor/cakephp/cakephp-codesnifferMake 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 ./testsThen commit and push your changes to your fork, and open a pull request.