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.4.0 |
See CHANGELOG.md for details Jul 03, 2025 |
|---|---|
| 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.