public function getPageParent($page) { $pagesConfig = $this->getPagesConfig(); $requestedFileName = $page->getBaseFileName(); $parent = null; $iterator = function ($configPages) use(&$iterator, &$parent, $requestedFileName) { foreach ($configPages as $fileName => $subpages) { if ($fileName == $requestedFileName) { return true; } if ($iterator($subpages) == true && is_null($parent)) { $parent = $fileName; return true; } } }; $iterator($pagesConfig['static-pages']); return $parent; }
/** * Returns the parent page that belongs to this one, or null. * @return mixed */ public function getParent() { if ($this->parentCache !== null) { return $this->parentCache; } $pageList = new PageList($this->theme); $parent = null; if ($fileName = $pageList->getPageParent($this)) { $parent = static::load($this->theme, $fileName); } return $this->parentCache = $parent; }