我花了几个小时来解决这个问题。我想访问 Typo3 Fluid 中页面的选定类别,但没有默认方法可以做到这一点。
没有没有默认的方法来执行此操作。您需要自己查询数据库并连接表。不用感谢 Typo3——没有人能预料到,开发人员实际上想要访问其模板中选定的类别。 (╯°□°)╯︵┻⁄┻
在 Fluidtemplate 中的设置 Typoscript 中,添加 DatabaseQueryProcessor:
page = PAGE
page {
typeNum = 0
(...)
10 = FLUIDTEMPLATE
10 {
(...)
dataProcessing {
(...)
30 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
30 {
table = sys_category
selectFields = sys_category.*
pidInList = root,-1
recursive = 99
join = sys_category_record_mm ON (sys_category_record_mm.uid_local=sys_category.uid)
where = sys_category_record_mm.tablenames='pages' AND sys_category_record_mm.uid_foreign = ###pageuid###
orderBy = sorting
markers.pageuid.field = uid
as = pageCategories
}
}
}
}
此代码片段创建一个名为 pageCategories
的变量,它是当前页面所有选定类别的数组。您可以访问标题 e。 G。通过
pageCategories.0.data.title
或在液体中循环:
<f:for each='{pageCategories}' as='category' iteration='inter'>
<span class='category-tag'>{category.data.title}</span>
</f:for>
说实话,我自己也不懂查询语法,但这是一个可行的解决方案。对于这个问题只有一些谷歌结果,它们要么对我的情况不起作用,要么从未得到回答,所以我想分享我的解决方案。感谢
t3brightside,他维护了 pagelist 扩展,此代码片段的灵感来自于该扩展~~(被盗)。