private function getPrevNext(HasNodeInterface $page, $loop) { $class = ClassLookup::getClass($page); $id = $page->getId(); if (false === isset($this->nav[$class][$id])) { $parent = $this->contentCategory->getParentCategory($page, true); $siblings = $this->siteTree->getChildren($parent, ['refName' => $class, 'depth' => 1]) ?: new UnknownNodeBranch(); $this->nav[$class][$id] = $this->calculatePrevNext($siblings, $page, $loop); } return array_values($this->nav[$class][$id]); }
public function isUnderPage(AbstractPage $page, $name) { $slug = $this->slugifier->slugify($name); $breadcrumbs = $this->categoryService->getBreadcrumbs($page, true); return array_reduce($breadcrumbs, function ($match, Category $parent) use($slug) { if ($match) { return true; } return substr($parent->getSlug(), 0, -strlen($slug)) === $slug || $this->slugifier->slugify($parent->getTitle()) === $slug; }); }
/** * @param Options $options * @param mixed $value * @return Category|null */ public function normalizeCategory(Options $options, $value) { if (null === $value) { return null; } if ($value instanceof Category) { return $value; } if ($value instanceof HasNodeInterface) { return $this->contentCategory->getCurrentCategory($value); } return null; }