Example #1
0
 /**
  * Render parts
  *
  * @param Array $parts      This corresponds to whatever files are in public/theme,
  *                          with the exception of body, which triggers rendering the
  *                          main content. Threefold by default tries header, body, footer.
  * @param Page $page        The current page.
  * @since 2.0.0
  */
 private function renderTemplate(array $parts, Page $page)
 {
     $loader = new \Twig_Loader_Filesystem([THEME, PAGES]);
     $twig = new \Twig_Environment($loader);
     $ext = ".html";
     foreach ($parts as $part) {
         if ($part === "body") {
             $path = $page->tree . DS . $page->slug;
             $baseFolder = PAGES;
         } else {
             $path = $part;
             $baseFolder = THEME;
         }
         if (file_exists($baseFolder . DS . $path . $ext)) {
             echo $twig->render($path . $ext, $page->getMetadata());
         } elseif ($part === "body") {
             static::renderTemplate(["404"], $page);
         } else {
             throw new TemplateException("Warning: no template file found for template part '" . $part . "!");
         }
     }
 }