【问题标题】:TYPO3: Extbase get related pages by sys_categoriesTYPO3:Extbase 通过 sys_categories 获取相关页面
【发布时间】:2017-02-21 11:42:55
【问题描述】:

我需要获取与最近页面有一个或多个 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

【问题讨论】:

    标签: php typo3 extbase


    【解决方案1】:

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

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

    例如:

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

    【讨论】:

    • 你们两个是对的。我已经这样测试过了:$pid = $GLOBALS['TSFE']->page['uid']; $query = \TYPO3\CMS\Extbase\Domain\Repository\CategoryRepository::createQuery(); $query->statement("SELECT uid_local FROM sys_category_record_mm WHERE tablenames = 'pages' AND uid_foreign = ".$pid); $categories = $query->execute(); 但是无法通过猫获取页面。
    • 我不认为您可以使用一些 extbase 内容从类别中获取页面。您可以尝试使用\TYPO3\CMS\Core\Category\Collection\CategoryCollection 获取页面。
    • 我为 CategoryCollection 添加了一些示例代码。
    【解决方案2】:

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

    实际的类别 ID 在 mm-table sys_category_record_mm 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 2017-07-23
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多