world-game/site/plugins/kirby-seo/classes/SchemaSingleton.php
isUnknown 58c31ea391
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s
feat: intégration plugin Kirby SEO
- 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>
2026-03-25 12:59:18 +01:00

37 lines
752 B
PHP

<?php
namespace tobimori\Seo;
use Kirby\Cms\Page;
use Spatie\SchemaOrg\Schema;
class SchemaSingleton
{
private static $instances = [];
private function __construct()
{
}
public static function getInstance(string $type, Page|null $page = null): mixed
{
if (!class_exists('Spatie\SchemaOrg\Schema')) {
return null;
}
if (!isset(self::$instances[$page?->id() ?? 'default'][$type])) {
self::$instances[$page?->id() ?? 'default'][$type] = Schema::{$type}();
}
return self::$instances[$page?->id() ?? 'default'][$type];
}
public static function getInstances(Page|null $page = null): array
{
if (!class_exists('Spatie\SchemaOrg\Schema')) {
return [];
}
return self::$instances[$page?->id() ?? 'default'] ?? [];
}
}