From 47e77f9fac1155c536b2b87fec552c7fcce66fa6 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 01 Jun 2026 18:06:34 +0000
Subject: [PATCH] =Timeline block fixes. Next up: adding article schema classes

---
 inc/registrar/config/seo/Resolver.php |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/inc/registrar/config/seo/Resolver.php b/inc/registrar/config/seo/Resolver.php
index db40ea7..e9c681b 100644
--- a/inc/registrar/config/seo/Resolver.php
+++ b/inc/registrar/config/seo/Resolver.php
@@ -15,7 +15,7 @@
 class Resolver {
 	protected static ?Meta $meta;
 
-	public static function resolve(string $template, ?Meta $meta): string
+	public static function resolve(string $template, ?Meta $meta): string|array|\JVBase\managers\SEO\render\Thing\Thing
 	{
 		if (!$meta) {
 			if (is_singular()){
@@ -25,6 +25,11 @@
 			}
 		}
 		self::$meta = $meta;
+
+		if (preg_match('/^\{\{([^}]+)}}$/', trim($template), $matches)) {
+			return self::resolveVariable($matches[1], $meta);
+		}
+
 		return preg_replace_callback(
 			'/\{\{([^}]+)}}/',
 			fn($matches) => self::resolveVariable($matches[1], $meta),
@@ -34,6 +39,7 @@
 	protected static function resolveVariable(string $variable, ?Meta $meta = null): mixed
 	{
 		$variable = trim($variable);
+
 		switch ($variable) {
 			case 'CREATOR':
 				return JVB()->seo()->getCreator();
@@ -50,6 +56,10 @@
 		if (str_contains($variable, '.') && $meta) {
 			return self::resolveRelation($variable, $meta);
 		}
+		$function = BASE.'resolve_'.$variable;
+		if (function_exists($function)) {
+			return $function($variable, $meta);
+		}
 		if ($meta && $variable === 'post_permalink') {
 			return get_the_permalink($meta->id());
 		}
@@ -78,7 +88,6 @@
 		$relation = array_shift($parts);
 		$field = implode('.', $parts);
 
-
 		//We need to:
 			// 1) Get the id of the item we're fetching (meta value of the $relation)
 		if ($relation === 'registrar') {
@@ -94,6 +103,7 @@
 		if (!$meta) {
 			return'';
 		}
+
 		$ID = $meta->get($relation);
 		if (empty($ID)) {
 			return '';
@@ -172,7 +182,7 @@
 
 		$ignore = ['description', 'name'];
 		if (JVB_TESTING && !in_array($property, $ignore)) {
-			error_log('[SEO]Resolver - No method found for '.$property.' with value: '.print_r($value, true).'. Defaulting to base Resolver');
+//			error_log('[SEO]Resolver - No method found for '.$property.' with value: '.print_r($value, true).'. Defaulting to base Resolver');
 		}
 
 

--
Gitblit v1.10.0