/** * Renders the page slots from a Page entity * @param \RedKiteCms\FilesystemEntity\Page $page * @param array $options * * @return array */ public function render(Page $page, array $options = array()) { $slots = $page->getPageSlots(); $this->slots = $this->renderSlots($page, $slots, $options); $event = Dispatcher::dispatch(RenderEvents::PAGE_RENDERED . '.' . strtolower($page->getPageName()), new PageRenderedEvent($page)); return $event->getPage(); }
/** * Synchronizes the site slots with the theme slots * * @param \RedKiteCms\FilesystemEntity\Page $page * @param array $pages */ public function synchronize(Page $page, array $pages) { if (!$this->configurationHandler->isTheme()) { return; } foreach ($pages as $pageValues) { $tokens = explode("_", $pageValues["seo"][0]["language"]); $pageOptions = array('page' => $pageValues["name"], 'language' => $tokens[0], 'country' => $tokens[1]); $page->render($this->configurationHandler->siteDir(), $pageOptions); $this->saveTemplateSlots($page->getPageSlots(), $pageValues["template"]); } $this->saveTemplateSlots($page->getCommonSlots(), 'base'); }
private function createWebsitePages($theme) { $isTheme = $this->app["red_kite_cms.configuration_handler"]->isTheme(); $user = null; if (!$isTheme) { $user = '******'; } $language = "en_GB"; $pages = $theme->getPages(); if (null == $pages) { $this->registerTwig(); echo $this->app["twig"]->render('RedKiteCms/Resources/views/Bootstrap/bootstrap.html.twig', array("theme_name" => $theme->getName(), "site_path" => $this->app["red_kite_cms.configuration_handler"]->siteDir())); exit; } $this->app["red_kite_cms.page_collection_manager"]->contributor($user); $theme = $this->app["red_kite_cms.theme"]; $this->app["red_kite_cms.slots_generator"]->generate(); foreach ($pages as $pageName => $templateName) { $page = array("name" => $pageName, "template" => $templateName, "seo" => array(array("permalink" => str_replace('_', '-', strtolower($language)) . "-" . $pageName, "changed_permalinks" => array(), "title" => $pageName . '-title', "description" => $pageName . '-description', "keywords" => $pageName . '-keywords', "sitemap_frequency" => 'monthly', "sitemap_priority" => '0.5', "language" => $language))); $this->app["red_kite_cms.page_collection_manager"]->add($theme, $page); $page = new Page($this->app["jms.serializer"], new OptionsResolver(), $this->app["red_kite_cms.slot_parser"]); $pageOptions = array('page' => $pageName, 'language' => 'en', 'country' => 'GB'); $page->render($this->app["red_kite_cms.configuration_handler"]->siteDir(), $pageOptions, $user); $this->savePermalinks($page->getPageSlots()); $this->savePermalinks($page->getCommonSlots()); $this->app["red_kite_cms.permalink_manager"]->save(); } if (!$isTheme) { $blockManager = new BlockManagerApprover($this->app["jms.serializer"], new OptionsResolver()); $this->app["red_kite_cms.deployer"]->contributor('admin')->saveAllPages($blockManager, array('en_GB')); } $fileSystem = new Filesystem(); $fileSystem->remove($this->app["red_kite_cms.configuration_handler"]->siteCacheDir()); }