我需要获取一个随机页面的页面媒体和摘录,该页面具有与最近页面相同的一个或多个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
答案 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
。