我使用TypoScript渲染内容元素:
page.10 < styles.content.get
page.10.select.where = colPos=0
page.10.wrap = <section id="resources"><h1 class="section">Resources</h1><div class="accordion"> | </div></section>
page.10.renderObj.stdWrap.dataWrap = <div class="contentelement layout-{field:layout} type-{field:CType}"> | </div>
如何输出与每个内容元素关联的类别?理想情况下,我想在像{field:categories}这样的数据包中执行此操作,但如果这不起作用,我也不介意将它们附加到一些单独的HTML元素中。
我尝试使用sys_category_record_mm表实现JOIN,但没有任何工作。
有什么想法吗?
编辑:
这是我最近的尝试:
page.10.renderObj.stdWrap.postCObject = CONTENT
page.10.renderObj.stdWrap.postCObject {
wrap = <p class="categories">|</p>
if.isTrue.field = categories
table = tt_content
select {
uidInList.field = uid
join = sys_category_record_mm ON tt_content.uid = sys_category_record_mm.uid_foreign JOIN sys_category ON sys_category.uid = sys_category_record_mm.uid_local
orderBy = sys_category.sorting
}
renderObj = TEXT
renderObj {
field = title
wrap = |
}
}
如果内容元素已分配类别,则仅输出空<p class="categories"></p>
。但这些类别没有列出。
答案 0 :(得分:0)
page.10.renderObj.stdWrap.postCObject = CONTENT
page.10.renderObj.stdWrap.postCObject {
wrap = <p class="categories">|</p>
table = sys_category
select {
pidInList = 123 # Storage page/folder of your category records
selectFields = sys_category.*
join = sys_category_record_mm ON sys_category_record_mm.uid_local = sys_category.uid
where.data = field:_LOCALIZED_UID // field:uid
where.intval = 1
where.wrap = sys_category_record_mm.uid_foreign = |
andWhere = sys_category_record_mm.tablenames = 'tt_content'
orderBy = sys_category.sorting
languageField = 0
}
renderObj = TEXT
renderObj {
#DEMO INCL TRANSLATED CAT NAMES:
value = {field:uid}:{field:title} ---
insertData = 1
noTrimWrap = || |
}
}
一些细节:
CONTENT.select
会实现多个固有默认值。其中之一是仅使用当前页面。因此,如果您的类别未存储在当前页面中(可能),则必须使用pidInList
覆盖默认值。where.data
子句中完成的。如果从Fluid模板调用此TS,您将在data._LOCALIZED_UID
中找到叠加记录的uid。如果您使用的是单一语言系统,则只能使用uid。tablenames = 'tt_content'
。否则,您可能会返回分配给其他表的类别(例如来自EXT新闻记录的tx_news_domain_model_news
)。