TYPO3 Seitenbaum im Frontend auslesen

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 Ebenemacht aber nix, man kann ja eine rekursive Funktion draus machen.

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);

 

3 Gedanken zu „TYPO3 Seitenbaum im Frontend auslesen“

  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 🙂

  2. 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?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert