Für eine Erweiterung benötigte ich im Frontend den gesamten Seitenbaum als Array. Hierbei kann man auf t3lib_pageSelect
zurückgreifen. Zwar liefert getMenu()
standardmäßig nur eine Ebene, aber das ist kein Problem – man kann einfach eine rekursive Funktion daraus erstellen.
Verwendung innerhalb einer Klasse:
/** * @param int $pageUid Ausgangspunkt / Root page * @param array $pageTree * @return array */ protected function getPageTree($pageUid = 1, $pageTree = array()) { $this->pageSelect = new t3lib_pageSelect(); $this->pageSelect->init(TRUE); $pageTree = $this->pageSelect->getMenu($pageUid); foreach($pageTree as &$page) { $page['subPages'] = $this->getPageTree($page['uid'], $pageTree); } return $pageTree; } |
Und als „standalone“ Funktion:
/** * @param int $pageUid Ausgangspunkt / Root page * @param array $pageTree * @return array */ function getPageTree($pageUid = 1, $pageTree = array()) { $pageSelect = new t3lib_pageSelect(); $pageSelect->init(TRUE); $pageTree = $pageSelect->getMenu($pageUid); foreach($pageTree as &$page) { $page['subPages'] = getPageTree($page['uid'], $pageTree); } return $pageTree; } $pageTree = getPageTree($rootPage = 1);
Hey super!
Wollte ich mir gerade selbst bauen, aber da dachte ich: schau doch mal vorher nach. Da bist Du bestimmt nicht der erste, der das braucht.
Vielen Dank 🙂
Danke für den Code – funktioniert super.
Ein Problem habe ich aber noch: Im WorkspacePreview werden nur Seiten angezeigt, die schon live geschaltet sind, also somit kein echter Workspace-Preview.
Gibts dazu ne Lösungsidee?
Hi Tobias,
da weiß ich leider auch nix genaues, aber siehr dir mal die Dokumentation von t3lib_pageSelect an, dort gibt es eine Methode getWorkspaceVersionOfRecord. Vielleicht hilft dir das weiter!