themePath = $themePath; $this->themeAssetPath = $themeAssetPath; $path = explode("/", $themeAssetPath); $this->themeFolder = $path[4]; $this->data = json_decode(file_get_contents("./config.json"), true); $this->loader = new \Twig\Loader\FilesystemLoader($themePath); $this->twig = new \Twig\Environment($this->loader, []); $this->router($_SERVER["REQUEST_URI"]); } public function router(string $request) { $pageInfo = [ "keywords" => $this->data["keywords"], "description" => $this->data["description"], "image" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", ]; $menu = $this->data["menu"]; switch ($request) { case "/": $recent = $this->data["recent_posts"]; $featured = $this->data["featured_posts"]; $template = $this->themeFolder . "/index.twig"; $pageOptions = [ "debug" => true, "title" => "This is Fipamo", "background" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", "recent" => $recent, "featured" => $featured, "info" => $pageInfo, "menu" => $menu, ]; break; case "/page": $content = $this->data["content"]; $meta = $this->data["meta"]; $template = $this->themeFolder . "/page.twig"; $pageOptions = [ "debug" => true, "title" => "Page Title", "background" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", "content" => $content, "meta" => $meta, "info" => $pageInfo, "menu" => $menu, ]; break; case "/tags": $tags = $this->data["tag_list"]; $template = $this->themeFolder . "/tags.twig"; $pageOptions = [ "debug" => true, "title" => "Pages Tagged as Tag", "background" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", "tag_list" => $tags, "info" => $pageInfo, "menu" => $menu, ]; break; case "/archive": $archive = $this->data["archives"]; $template = $this->themeFolder . "/archive.twig"; $pageOptions = [ "debug" => true, "title" => "Archive", "background" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", "archives" => $archive, "info" => $pageInfo, "menu" => $menu, ]; break; default: http_response_code(404); require __DIR__ . "/views/404.php"; break; } echo $this->twig->render($template, $pageOptions); } } new StartKit();