コード例 #1
0
 /**
  * Gets all the template data for rendering a layout.
  */
 public static function getTemplateRenderingData(IPage $page)
 {
     $pieCrust = $page->getApp();
     $pageData = $page->getPageData();
     $pageContentSegments = $page->getContentSegments();
     $siteData = self::getSiteData($page);
     $appData = self::getAppData($pieCrust, $siteData, $pageData, $pageContentSegments, $page->wasCached());
     $renderData = Configuration::mergeArrays($appData, $siteData, $pageData, $pageContentSegments);
     return $renderData;
 }
コード例 #2
0
ファイル: PageBaker.php プロジェクト: giftnuss/PieCrust
 /**
  * Bakes the given page. Additional template data can be provided, along with
  * a specific set of posts for the pagination data.
  */
 public function bake(IPage $page, array $extraData = null)
 {
     $didBake = false;
     try {
         $this->bakedFiles = array();
         $this->paginationDataAccessed = false;
         $this->logger->debug("Baking '{$page->getUri()}'...");
         $pageRenderer = new PageRenderer($page);
         $hasMorePages = true;
         while ($hasMorePages) {
             $didBakeThisOne = $this->bakeSinglePage($pageRenderer, $extraData);
             $didBake |= $didBakeThisOne;
             if (!$didBakeThisOne) {
                 break;
             }
             $data = $page->getPageData();
             if ($data and isset($data['pagination'])) {
                 $paginator = $data['pagination'];
                 $hasMorePages = ($paginator->wasPaginationDataAccessed() and $paginator->hasMorePages());
                 if ($hasMorePages) {
                     $page->setPageNumber($page->getPageNumber() + 1);
                     // setPageNumber() resets the page's data, so when we
                     // enter bakeSinglePage again in the next loop, we have
                     // to re-set the extraData and all other stuff.
                 }
             }
         }
     } catch (Exception $e) {
         $pageRelativePath = PageHelper::getRelativePath($page);
         throw new PieCrustException("Error baking page '{$pageRelativePath}' (p{$page->getPageNumber()})", 0, $e);
     }
     // Record our work.
     if ($this->bakeRecord) {
         $this->bakeRecord->addPageEntry($page, $didBake ? $this : null);
     }
     return $didBake;
 }
コード例 #3
0
 /**
  * Bakes the given page. Additional template data can be provided, along with
  * a specific set of posts for the pagination data.
  */
 public function bake(IPage $page, array $extraData = null)
 {
     $didBake = false;
     try {
         $this->bakedFiles = array();
         $this->paginationDataAccessed = false;
         $pageRenderer = new PageRenderer($page);
         $hasMorePages = true;
         while ($hasMorePages) {
             $didBake |= $this->bakeSinglePage($pageRenderer, $extraData);
             $data = $page->getPageData();
             if ($data and isset($data['pagination'])) {
                 $paginator = $data['pagination'];
                 $hasMorePages = ($paginator->wasPaginationDataAccessed() and $paginator->hasMorePages());
                 if ($hasMorePages) {
                     $page->setPageNumber($page->getPageNumber() + 1);
                     // setPageNumber() resets the page's data, so when we
                     // enter bakeSinglePage again in the next loop, we have
                     // to re-set the extraData and all other stuff.
                 }
             }
         }
     } catch (Exception $e) {
         throw new PieCrustException("Error baking page '{$page->getUri()}' (p{$page->getPageNumber()}): {$e->getMessage()}", 0, $e);
     }
     return $didBake;
 }