/**
  * Renders the product group navigation.
  *
  * @param SiteTree $rootPage    The root page to start with
  * @param SiteTree $currentPage The current SiteTree object
  * @param int      $level       The current level
  *
  * @return string
  * 
  * @author Sebastian Diel <*****@*****.**>,
  *         Sascha Koehler <*****@*****.**>
  * @since 24.11.2014
  */
 public function renderProductGroupNavigation($rootPage, $currentPage, $level = 0)
 {
     $renderStr = '';
     $isActivePage = false;
     $level++;
     if ($this->levelsToShow == 0 || $level <= $this->levelsToShow) {
         if (!($this->expandActiveSectionOnly && ($this->levelsToShow != 0 && $level > $this->levelsToShow || $level > 1) && SilvercartTools::findPageIdInHierarchy($rootPage->getParent()->ID) === false)) {
             $childPages = $rootPage->Children();
             $childPageStr = '';
             if ($childPages && $childPages->Count() > 0) {
                 foreach ($childPages as $childPage) {
                     $childPageStr .= $this->renderProductGroupNavigation($childPage, $currentPage, $level);
                 }
             }
             if (Controller::curr()->ID === $rootPage->ID) {
                 $isActivePage = true;
             }
             if (SilvercartTools::findPageIdInHierarchy($rootPage->ID) || $rootPage->ID === $currentPage->ID) {
                 $isActiveSection = true;
             } else {
                 $isActiveSection = false;
             }
             $data = new ArrayData(array('MenuTitle' => $rootPage->getMenuTitle(), 'Title' => $rootPage->getTitle(), 'Link' => $rootPage->Link(), 'LinkOrSection' => $rootPage->LinkOrSection(), 'ChildPages' => $childPageStr, 'IsActivePage' => $isActivePage, 'IsActiveSection' => $isActiveSection, 'Level' => $level));
             $renderStr .= $data->renderWith('SilvercartProductGroupNavigationWidgetEntry');
         }
     }
     return $renderStr;
 }
Пример #2
0
 /**
  * Builds a hierarchy from the current page to the top product group page
  * or holder.
  *
  * @param SiteTree $currPage The page to start from
  *
  * @return array
  *
  * @author Sascha Koehler <*****@*****.**>
  * @since 18.10.2012
  */
 public static function getPageHierarchy($currPage)
 {
     if (!array_key_exists('SiteTree_' . $currPage->ID, self::$pageHierarchy)) {
         $level = 0;
         $hierarchy = array('SiteTree_' . $currPage->ID => array('Page' => $currPage, 'Level' => $level));
         while ($currPage->hasMethod('getParent') && $currPage->getParent()) {
             $parent = $currPage->getParent();
             if ($parent) {
                 $level++;
                 $hierarchy['SiteTree_' . $parent->ID] = array('Page' => $parent, 'Level' => $level);
                 $currPage = $parent;
             } else {
                 break;
             }
         }
         self::$pageHierarchy['SiteTree_' . $currPage->ID] = array();
         foreach ($hierarchy as $pageID => $pageInfo) {
             self::$pageHierarchy['SiteTree_' . $currPage->ID][$pageID] = array('Page' => $pageInfo['Page'], 'Level' => ($pageInfo['Level'] - $level) * -1);
         }
     }
     return self::$pageHierarchy['SiteTree_' . $currPage->ID];
 }