public function getPageSubTree($page) { $pagesConfig = $this->getPagesConfig(); $requestedFileName = $page->getBaseFileName(); $subTree = []; $iterator = function ($configPages) use(&$iterator, &$subTree, $requestedFileName) { foreach ($configPages as $fileName => $subpages) { if ($fileName == $requestedFileName) { $subTree = $subpages; return true; } if ($iterator($subpages) == true) { return true; } } }; $iterator($pagesConfig['static-pages']); return $subTree; }
/** * Returns all the child pages that belong to this one. * @return array */ public function getChildren() { if ($this->childrenCache !== null) { return $this->childrenCache; } $children = []; $pageList = new PageList($this->theme); $subtree = $pageList->getPageSubTree($this); foreach ($subtree as $fileName => $subPages) { $subPage = static::load($this->theme, $fileName); if ($subPage) { $children[] = $subPage; } } return $this->childrenCache = $children; }