TYPO3:Extbase通过sys_categories获取相关页面

时间:2017-02-21 11:42:55

标签: php typo3 extbase

我需要获取一个随机页面的页面媒体和摘录,该页面具有与最近页面相同的一个或多个sys_categories。

我尝试使用where子句来获取cat id:

$categories = $GLOBALS['TSFE']->page['categories'];
$cats = explode(',',$categories);
foreach($cats as $cat) {
    if($whereClauses != '') $whereClauses .= " OR ";
    $whereClauses .= $cat.' IN pages.categories';
}

但我没有把它作为$this->pageRepository->getRecordsByField的where子句运行 希望任何人都可以帮助我访问该页面。

这是7.6.x TYPO3和extbase

2 个答案:

答案 0 :(得分:2)

类别在MM关系表(sys_category_record_mm)中分配,因此类别不会保存在页面表中。

因此,您必须查询此表以获取分配给类别的页面。

例如:

$GLOBALS['TYPO3_DB']->exec_SELECT_mm_query('*', 'sys_category', 'sys_category_record_mm', 'pages', 'tablenames = "pages" AND sys_category.uid = 123')

编辑: CategoryCollection的使用示例:

$collection = \TYPO3\CMS\Core\Category\Collection\CategoryCollection::load($id, false, 'pages');
$items = $collection->getItems();

答案 1 :(得分:0)

pages.categories仅包含分配页面的类别数。

实际的类别ID位于mm-table sys_category_record_mm