Für eine Erweiterung brauchte ich im Frontend den kompletten Seitenbaum als Array. Hier kann man auf t3lib_pageSelect zurückgreifen, leider bekommt man mit getMenu() immer nur eine Ebene – macht aber nix, man kann ja eine rekursive Funktion draus machen.
Verwendung innerhalb einer Klasse:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/** * @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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/** * @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!