This plugin allows developers to create a sitemap.xml using a sitemap definition generator.
Check the plugin Documentation for details on how to create your own sitemap definition generator.
The following plugin extends or depends on the plugin
Requirements
- PHP 8.0 or higher
- October CMS 1.1 or higher
Usage
Sitemap definitions generator
To generate sitemap items you can create your own sitemap definition generator.
Example:
final class DefinitionGenerator implements Contracts\DefinitionGenerator { public function getDefinitions(): Definitions { $definitions = new Definitions(); for ($i = 0; $i < 100; $i++) { $definitions->addItem( (new Definition)->setModifiedAt(Carbon::now()) ->setPriority(1) ->setUrl('example.com/page/' . $i) ->setChangeFrequency(Definition::CHANGE_FREQUENCY_ALWAYS) ); } return $definitions; } }
Register your generator in the boot
method of your plugin class:
Event::listen(Contracts\SitemapGenerator::GENERATE_EVENT, static function(): DefinitionGenerator { return new DefinitionGenerator(); });
You can also register multiple generators:
Event::listen(Contracts\SitemapGenerator::GENERATE_EVENT, static function(): array { return [ new DefinitionGeneratorOne(), new DefinitionGeneratorTwo(), // .. ]; });
Invalidate sitemap cache
You can fire an event to invalidate the sitemap cache
Event::fire(Contracts\SitemapGenerator::INVALIDATE_CACHE_EVENT);
Or resolve the generator instance and use the invalidate cache method
/** @var SitemapGenerator $sitemapGenerator */ $sitemapGenerator = resolve(Contracts\SitemapGenerator::class); $sitemapGenerator->invalidateCache();
Update / Add / Delete definitions in cache
First resolve the sitemap generator
/** @var SitemapGenerator $sitemapGenerator */ $sitemapGenerator = resolve(Contracts\SitemapGenerator::class);
Add definitions
$sitemapGenerator->addDefinition( (new Definition()) ->setUrl('example.com/new-url') ->setModifiedAt(Carbon::now()) ->setChangeFrequency(Definition::CHANGE_FREQUENCY_YEARLY) ->setPriority(5) );
Update definitions
Note, definitions are updated by their URL.
$sitemapGenerator->updateDefinition( (new Definition()) ->setUrl('example.com/page/1') ->setModifiedAt(Carbon::parse('1900-10-10')) ->setPriority(7) ->setChangeFrequency(Definition::CHANGE_FREQUENCY_HOURLY), 'example.com/page/0' // (optional) specify the url to update in cache, when old url is null the definition url will be used. );
Update or add definitions
$sitemapGenerator->updateOrAddDefinition( (new Definition()) ->setUrl('example.com/create-or-add') ->setModifiedAt(Carbon::now()) ->setChangeFrequency(Definition::CHANGE_FREQUENCY_YEARLY) ->setPriority(5), null // (optional) specify the url to update in cache, when old url is null the definition url will be used. );
Delete definitions
$sitemapGenerator->deleteDefinition('example.com/new-url');
Exclude URLs from sitemap
Event::listen(SitemapGenerator::EXCLUDE_URLS_EVENT, static function (): array { return [ 'example.com/page/1', ]; });
Configuration
Add the plugin configuration to your config folder:
php artisan vendor:publish --provider="Vdlp\Sitemap\ServiceProvider" --tag="config"
You can change the amount of seconds the sitemap is cached in your .env
file.
You can also cache the sitemap forever.
VDLP_SITEMAP_CACHE_TIME = 3600 VDLP_SITEMAP_CACHE_FOREVER = false
Issues
If you have issues using this plugin. Please create an issue on GitHub or contact us at [octobercms@vdlp.nl]().
Contribution
Any help is appreciated. Or feel free to create a Pull Request on GitHub.
-
This plugin has not been reviewed yet.
-
2.3.0 |
Maintenance update. Check CHANGELOG.md for details. May 31, 2023 |
---|---|
2.2.0 |
Add sitemap config resolver and images. Fixed bug where sitemap would never regenerate when sitemap file exists. Nov 15, 2022 |
2.1.0 |
Maintenance update. Check CHANGELOG.md for details. Jun 24, 2022 |
2.0.0 |
!!! Add support for PHP 7.4 or higher. Please review plugin configuration, check README.md Jul 13, 2021 |
1.1.0 |
Update plugin dependencies May 28, 2021 |
1.0.3 |
Code cleanup Sep 01, 2020 |
1.0.2 |
Fix formatting of ModifiedAt DateTime Aug 18, 2020 |
1.0.1 |
Add LICENSE file to plugin Aug 18, 2020 |
1.0.0 |
First version of Vdlp.Sitemap Nov 05, 2019 |
Please review the plugin configuration when upgrading to version 2.