Generate HTML and XML sitemaps for your CakePHP application.
Switch branches/tags
Clone or download
justinyost Merge pull request #52 from davidyell/plugin-table-url-generation
Fixed the generation of urls to work with plugin table classes
Latest commit 4660438 Feb 1, 2018

README.md

CakePHP-Sitemap

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.

Requirements

  • CakePHP 3.0.0+
  • PHP 5.6+

Installation

$ 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

Usage

  • 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.

Configuration

  • 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',
			$entity->display_id,
		],
		true
	);
}
  • To customize the templates used when displaying the Sitemap, the CakePHP Book provides information regarding overriding Plugin Templates.

Contributing

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.

Development

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.

License

MIT

Copyright

Loadsys Web Strategies 2016