通过Typo3中的CategoryCollection通过parentID获取记录

时间:2018-07-23 08:04:13

标签: typo3 typo3-7.6.x typo3-8.x typo3-extensions

我正在使用CategoryCollection来获取特定类别ID的记录,但是问题是它仅加载了准确的类别,例如我有parent > child并且我将子类别ID附加到了记录中并且我选择了子类别,那么它会向我显示记录,但是,如果我选择parentID,那么它不会显示子类别记录。

$collection = \TYPO3\CMS\Frontend\Category\Collection\CategoryCollection::load(
        $categoryID,
        true,
        'tx_myextension_table_name',
        'categories'
    );

如果我从CategoryCollection中选择了父ID,是否有任何内置的方式来获取所有子类别的记录?

1 个答案:

答案 0 :(得分:0)

不幸的是,对于这种复杂的选择,没有内置的解决方案。您确实需要编写自己的逻辑,该逻辑可以像这样工作:

  1. 找到parent是您的类别的类别
  2. 对找到的每个类别递归重复此操作,直到不再为每个类别找到子类别为止
  3. 使用类别UID列表进行自定义IN()查询

如果您有较深的类别树,则可以将类别UID的列表放在custom cache中。您可以使用根类别UID或其哈希作为键。这些缓存条目应为taggedsys_category。或者,您可以为列表中的每个类别UID添加一个sys_category_<uid>标签。这样可以确保每当其中一个类别发生更改时,缓存条目都会被删除,您可以重建列表。