public function renderSitePage(Theme $theme, Site $site, $pageName, $language = null) { // TODO: Verify if $language is a supported language $context = new Context(); $context->setLanguage($language); $context->setTheme($theme); // Load all site-wide contents into the context foreach ($site->getContents() as $content) { $context->addContent($content); } $page = $site->getPageByName($pageName); // Load all page-wide contents into the context foreach ($page->getContents() as $content) { $context->addContent($content); } if (!$page) { throw new RuntimeException("No such page in site: " . $pageName); } foreach ($page->getPropertiesByLanguage($language) as $property) { $context->setProperty($property); } $templateName = $page->getTemplate(); $templateFilename = $theme->getBasePath() . '/code/' . $templateName; $data = file_get_contents($templateFilename); $data = $this->processTags($data, $context); $data = $this->processProperties($data, $context); //echo "\n##FINAL:##\n" . $data; exit('boom'); return $data; }