【问题标题】:TYPO3 6.2 output categories of a content elementTYPO3 6.2 内容元素的输出类别
【发布时间】:2015-11-26 20:02:51
【问题描述】:

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

如果内容元素分配了类别,这只会输出一个空的&lt;p class="categories"&gt;&lt;/p&gt;。但是没有列出类别。

【问题讨论】:

  • 是的,但我没有让它工作。 sn -p 没有效果?而且我不希望将类别添加到全局所有标题中,而只添加到我的 page.10 部分中。如何将它添加到我的 renderObj?

标签: typo3 categories typo3-6.2.x


【解决方案1】:
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。但是,如果您使用多种语言,则必须提供覆盖记录的 uid。这是在where.data 子句中完成的。如果您从 Fluid 模板调用此 TS,您将在 data._LOCALIZED_UID 中找到覆盖记录的 uid。如果您使用单一语言系统,则可能只使用 uid。
  • 您还必须过滤tablenames = 'tt_content'。否则,您可能会返回分配给其他表的类别(例如来自 EXT 新闻记录的 tx_news_domain_model_news)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多