将页面中的所有类别获取到打字稿中的数据属性中

问题描述 投票:0回答:1

在 TYPO3 项目中,我想收集所有包含内容和类别的子页面并将其呈现在根页面上。

lib.dynamicContent = COA
lib.dynamicContent {

    10 = CONTENT
    10 {
        table = pages
        select.orderBy = sorting
        select.where = doktype != 199
        as = pageId
        renderObj = COA
        renderObj {
            10 = CONTENT
            10 {
                table = tt_content
                select {
                    pidInList.field = uid
                    orderBy = sorting
                    where = colPos = 0
                }
            }
            20 = CONTENT
            20 {
                table = sys_category
                select {
                    pidInList.field = root,-1
                    selectFields = sys_category.uid, sys_category.title
                    join = sys_category_record_mm ON sys_category.uid = sys_category_record_mm.uid_local
                    where.data = field:uid
                    where.intval = 1
                    where.wrap = sys_category_record_mm.uid_foreign=|
                }

                renderObj = COA
                renderObj {
                    10 = TEXT
                    10.field = title
                    10.wrap =  |
                    10.wrap.override = <span class="category">|</span>
                }

                stdWrap {
                    wrap = <div class="categories">|</div>
                }
            }

            stdWrap {
                if.isLessThan.field = doktype
                if.value = 3
                wrap = <section id="p{field:uid}" data-display="{field:sys_category.title}">|</section>
                wrap.insertData = 1
            }
        }
    }
}

这是我当前的打字稿。 renderObj 中的第一个内容元素帮助我从所有子页面获取内容并使用页面 uid 设置部分 id。这样可行。 20.CONTENT 给出了子页面的类别。以下 renderObj 仅用于测试,它可以工作并且可以删除。但我想在数据显示属性中将类别呈现为逗号分隔列表,但我没有看到它。我在数据显示内分割了换行,但这不起作用,并且由于有一个列表,我无法使用 id 中的“变量”。有人可以帮助我找到解决方案吗?谢谢指教

typo3 typoscript
1个回答
0
投票

我现在有解决办法了。我重组了它,下面的代码很好:

lib.dynamicContent = COA
lib.dynamicContent {

    10 = CONTENT
    10 {
        table = pages
        select {
            pidInList = this
            recursive = 1
            where = doktype = 1
            selectFields = pages.*, group_concat(sys_category.title SEPARATOR ',') AS categories
            join = sys_category_record_mm ON pages.uid = sys_category_record_mm.uid_foreign JOIN sys_category ON sys_category_record_mm.uid_local = sys_category.uid
            groupBy = pages.uid
        }

        renderObj = COA
        renderObj {
            10 = COA
            10 {
                stdWrap.dataWrap = <section id="p{field:uid}" data-display="{field:categories}">|</section>
                10 = CONTENT
                10 {
                    table = tt_content
                    select {
                        pidInList.field = uid
                        orderBy = sorting
                        where = colPos = 0
                    }
                    
                    stdWrap.wrap = <div class="page-content">|</div>
                }
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.