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>
37 lines
752 B
PHP
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'] ?? [];
|
|
}
|
|
}
|