我想知道我找不到返回完整页面树的typo3方法:(所以我写了一个小函数(你可以在extbase扩展中使用),肯定不是最好或最快的方法,但易于扩展或定制 ;)
首先你需要一个 PageRepository 的实例
$this->t3pageRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\Page\\PageRepository');
this->t3pageRepository->init();
进行初始化,以设置一些基本配置,例如“WHERE deletet = 0 AND hidden = 0 ...”
然后使用此函数,您将获得一个包含页面数据和子页面的数组。我实现了最多三个级别的 yust:
function getPageTree($pid,$deep=2){
$fields = '*';
$sortField = 'sorting';
$pages = $this->t3pageRepository->getMenu($pid,$fields,$sortField);
if($deep>=1){
foreach($pages as &$page) {
$subPages1 = $this->t3pageRepository->getMenu($page['uid'],$fields,$sortField);
if(count($subPages1)>0){
if($deep>=2){
foreach($subPages1 as &$subPage1){
$subPages2 = $this->t3pageRepository->getMenu($subPage1['uid'],$fields,$sortField);
if(count($subPages2>0)){
$subPage1['subpages'] = $subPages2;
}
}
}
$page['subpages'] = $subPages1;
}
}
}
return $pages;
}