From 611bf755761e4893425f23f45413b79a28a357ea Mon Sep 17 00:00:00 2001 From: Ruben Date: Tue, 17 Mar 2026 11:23:07 +0100 Subject: [PATCH] Add social image URL and metadata to template context --- app/plugins/global/languages.php | 5 +---- app/rendering.php | 14 ++++++++------ app/router.php | 13 ++++++++++++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/plugins/global/languages.php b/app/plugins/global/languages.php index 4425454..22a2000 100644 --- a/app/plugins/global/languages.php +++ b/app/plugins/global/languages.php @@ -46,10 +46,7 @@ Hooks::add(Hook::PROCESS_CONTENT, function(mixed $data, string $dirOrType, strin // Filter content files by language variant if (is_array($data) && !empty($data) && isset($data[0]['path'])) { - error_log("filterFilesByLanguage called with " . count($data) . " files, current lang: $currentLang"); - $filtered = filterFilesByLanguage($data, $dirOrType, $ctx); - error_log("Filtered to " . count($filtered) . " files"); - return $filtered; + return filterFilesByLanguage($data, $dirOrType, $ctx); } return $data; diff --git a/app/rendering.php b/app/rendering.php index c4a099a..08dc19e 100644 --- a/app/rendering.php +++ b/app/rendering.php @@ -59,7 +59,8 @@ function renderTemplate(Context $ctx, string $content, int $statusCode = 200): v 'pageCssHash' => $ctx->get('pageCssHash'), 'pageJsUrl' => $ctx->get('pageJsUrl'), 'pageJsHash' => $ctx->get('pageJsHash'), - 'feedUrl' => $ctx->get('feedUrl') + 'feedUrl' => $ctx->get('feedUrl'), + 'socialImageUrl' => $ctx->get('socialImageUrl') ], $ctx); extract($templateVars); @@ -73,8 +74,8 @@ function renderTemplate(Context $ctx, string $content, int $statusCode = 200): v function renderMultipleFiles(Context $ctx, array $files, string $pageDir): void { // Load metadata and page plugins BEFORE rendering content files // so that plugin-provided template variables are available to PHP content files - $pageMetadata = loadMetadata($pageDir); - getPluginManager()->loadPagePlugins($pageMetadata); + $metadata = loadMetadata($pageDir); + getPluginManager()->loadPagePlugins($metadata); $content = ''; foreach ($files as $file) { @@ -83,8 +84,8 @@ function renderMultipleFiles(Context $ctx, array $files, string $pageDir): void $navigation = $ctx->navigation; $homeLabel = $ctx->homeLabel; - $pageTitle = $pageMetadata['title'] ?? null; - $metaDescription = extractMetaDescription($pageDir, $pageMetadata); + $pageTitle = $metadata['title'] ?? null; + $metaDescription = extractMetaDescription($pageDir, $metadata); $pageCss = findPageCss($pageDir, $ctx->contentDir); $pageCssUrl = $pageCss['url'] ?? null; @@ -112,7 +113,8 @@ function renderMultipleFiles(Context $ctx, array $files, string $pageDir): void 'pageCssHash' => $pageCssHash, 'pageJsUrl' => $pageJsUrl, 'pageJsHash' => $pageJsHash, - 'socialImageUrl' => $socialImageUrl + 'socialImageUrl' => $socialImageUrl, + 'metadata' => $metadata ], $ctx); extract($templateVars); diff --git a/app/router.php b/app/router.php index 6f4d3a3..8ad8231 100644 --- a/app/router.php +++ b/app/router.php @@ -249,6 +249,14 @@ switch ($parsedPath['type']) { ? $langPrefix . '/' . trim($ctx->requestPath, '/') . '/feed.xml' : null; + // Build social image URL from cover image if present + $coverImage = findCoverImage($dir); + $socialImageUrl = null; + if ($coverImage) { + $relativePath = trim(str_replace($ctx->contentDir, '', $dir), '/'); + $socialImageUrl = '/' . ($relativePath ? $relativePath . '/' : '') . $coverImage; + } + // Store for base template (renderTemplate reads these from context) $ctx->set('pageTitle', $pageTitle); $ctx->set('metaDescription', $metaDescription); @@ -257,6 +265,7 @@ switch ($parsedPath['type']) { $ctx->set('pageJsUrl', $pageJsUrl); $ctx->set('pageJsHash', $pageJsHash); $ctx->set('feedUrl', $feedUrl); + $ctx->set('socialImageUrl', $socialImageUrl); // Let plugins add template variables $templateVars = Hooks::apply(Hook::TEMPLATE_VARS, [ @@ -270,7 +279,9 @@ switch ($parsedPath['type']) { 'pageJsHash' => $pageJsHash, 'items' => $items, 'pageContent' => $pageContent, - 'feedUrl' => $feedUrl + 'feedUrl' => $feedUrl, + 'socialImageUrl' => $socialImageUrl, + 'metadata' => $metadata ], $ctx); extract($templateVars);