From ea05d11452b911c2b43c9e62155b82775f13ace6 Mon Sep 17 00:00:00 2001 From: Ruben Date: Wed, 15 Oct 2025 19:30:27 +0200 Subject: [PATCH] Add support for custom page templates via metadata Implement template selection based on metadata page_template field, with support for both custom and default templates and automatic .php extension handling --- app/router.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/router.php b/app/router.php index f1ae42d..586519a 100644 --- a/app/router.php +++ b/app/router.php @@ -414,10 +414,22 @@ switch ($parsedPath['type']) { // Load metadata for this directory $metadata = loadMetadata($dir, $currentLang, $defaultLang); - // Check for custom list template (prefer list-grid.php over list.php) - $customListGridTemplate = dirname(__DIR__) . '/custom/templates/list-grid.php'; - if (file_exists($customListGridTemplate)) { - $listTemplate = $customListGridTemplate; + // Select list template based on metadata page_template + if (isset($metadata['page_template']) && !empty($metadata['page_template'])) { + $templateName = $metadata['page_template']; + // Add .php extension if not present + if (!str_ends_with($templateName, '.php')) { + $templateName .= '.php'; + } + $customTemplate = dirname(__DIR__) . '/custom/templates/' . $templateName; + $defaultTemplate = __DIR__ . '/default/templates/' . $templateName; + + if (file_exists($customTemplate)) { + $listTemplate = $customTemplate; + } elseif (file_exists($defaultTemplate)) { + $listTemplate = $defaultTemplate; + } + // If template doesn't exist, fall back to default $listTemplate } // Default directory listing