- Ajout de tobimori/kirby-seo via Composer
- snippet('seo/head') dans header.php (remplace les meta manuels)
- snippet('seo/schemas') dans footer.php pour JSON-LD
- Onglet SEO ajouté dans site.yml et tous les blueprints de pages
- Configuration SEO dans config.php (sitemap, robots, canonicalBase TODO)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.3 KiB
| title | intro |
|---|---|
| Customizing the Sitemap | Fine-tune the built-in sitemap or replace it entirely |
The built-in sitemap generator has a few options to adjust its behavior. For most sites, these are enough. If you need full control, you can replace the generator with your own.
Excluding templates
By default, only the error template is excluded. To exclude more templates:
<?php
// site/config/config.php
return [
'tobimori.seo' => [
'sitemap' => [
'excludeTemplates' => ['error', 'redirect', 'internal'],
],
],
];
Grouping by template
By default, all pages end up in a single sitemap. If you have many pages, you can split them into separate sitemaps per template. This creates a sitemap index at /sitemap.xml with links to /sitemap-blog.xml, /sitemap-product.xml, etc.
'sitemap' => [
'groupByTemplate' => true,
],
Change frequency and priority
Both changefreq and priority accept a static value or a callable:
'sitemap' => [
'changefreq' => 'daily',
'priority' => fn (Page $page) => $page->isHomePage() ? 1.0 : 0.5,
],
The default changefreq is weekly. The default priority is calculated from page depth: the homepage gets 1.0, each level deeper subtracts 0.2, down to 0.2.
Writing your own generator
If the options above aren't enough, you can replace the entire sitemap generator. The generator option takes a callable that receives a SitemapIndex instance. Here's a minimal example:
<?php
use tobimori\Seo\Sitemap\SitemapIndex;
return [
'tobimori.seo' => [
'sitemap' => [
'generator' => function (SitemapIndex $sitemap) {
$index = $sitemap->create('pages');
foreach (site()->index()->listed() as $page) {
$index->createUrl($page->url())
->lastmod($page->modified())
->changefreq('weekly')
->priority(0.8);
}
},
],
],
];
$sitemap->create('key') creates a sitemap group. $index->createUrl($url) adds a URL entry, and you can chain ->lastmod(), ->changefreq(), ->priority(), and ->alternates() on it.
The built-in generator does more: it filters by robots settings, respects excludeTemplates, handles groupByTemplate, and adds hreflang links for multilingual sites. You can find its source in config/options/sitemap.php as a reference for your own.