index-main/site/plugins/kirby-seo/config/page-methods.php
isUnknown 04a14a7f1f chore: update kirby-seo plugin to v2.0.0-alpha.12
Update plugin from v1.1.2 to v2.0.0-alpha.12 for Kirby 5 compatibility.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-10 16:23:23 +01:00

40 lines
1.8 KiB
PHP

<?php
use Kirby\Cms\Language;
use tobimori\Seo\SchemaSingleton;
use tobimori\Seo\Seo;
return [
'schema' => fn ($type) => Seo::option('components.schema')::getInstance($type, $this),
'schemas' => fn () => Seo::option('components.schema')::getInstances($this),
'metadata' => fn (?Language $lang = null) => new (Seo::option('components.meta'))($this, $lang),
'robots' => fn (?Language $lang = null) => $this->metadata($lang)->robots(),
'indexUrl' => function () {
// Google: "fallback page for unmatched languages, especially on language/country selectors or auto-redirecting home pages."
// https://developers.google.com/search/docs/specialty/international/localized-versions#all-method-guidelines
// returns the index URL of the site, e.g. https://example.com/
$kirbyUrl = $this->kirby()->url('index');
$defaultLang = $this->kirby()->defaultLanguage()?->code();
// returns the site URL, e.g. https://example.com/en
// we have to request the default language so we don't get localized slugs
$siteUrl = $this->site()->url($defaultLang);
// returns the full URL of the current page in the default language, e.g. https://example.com/en/about
// again, request default language otherwise there is a mismatch in language prefix between the site URL and the current page URL
$thisUrl = $this->url($defaultLang);
// remove the part form the URL that is specific to the 'site'
// this is usually the language code prefix
// https://example.com/en/ + https://example.com/en/about -> https://example.com/about
if (strpos($siteUrl, $kirbyUrl) === 0 && strlen($siteUrl) > strlen($kirbyUrl)) {
if (strpos($thisUrl, $siteUrl) === 0) {
$pathAfterSite = substr($thisUrl, strlen($siteUrl));
return "{$kirbyUrl}{$pathAfterSite}";
}
}
return $thisUrl;
},
];