TYPO3 6.2内容元素的输出类别

时间:2015-11-26 20:02:51

标签: typo3 categories typo3-6.2.x

我使用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 = |&nbsp;
    }
}

如果内容元素已分配类别,则仅输出空<p class="categories"></p>。但这些类别没有列出。

1 个答案:

答案 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覆盖默认值。
  • 我不知道你在哪里得到你的领域:uid from。但是,如果您使用多种语言,则必须提供叠加记录的uid。这是在where.data子句中完成的。如果从Fluid模板调用此TS,您将在data._LOCALIZED_UID中找到叠加记录的uid。如果您使用的是单一语言系统,则只能使用uid。
  • 您还必须过滤tablenames = 'tt_content'。否则,您可能会返回分配给其他表的类别(例如来自EXT新闻记录的tx_news_domain_model_news)。