通过Typoscript与IRRE定制内容元素 - >空数组

时间:2017-02-09 10:41:50

标签: typo3 typoscript fluid typo3-7.6.x

我在所有页面上通过typoscript获取自定义内容元素时遇到一些问题。 我创建了一个没有任何扩展名的自定义元素(如mask或dce)所以我只使用 TYPO3核心功能。这个元素是一个简单的东西,只是使用不可用于创建 在前端显示不同的框。

tt_content.box = COA
tt_content.box {
    10 = FLUIDTEMPLATE
    10 {
        file = EXT:xxx_elements/Resources/Private/Templates/Box.html
        partialRootPath = EXT:xxx_setup/Resources/Private/Content/Partials
        layoutRootPath = EXT:xxx_setup/Resources/Private/Content/Layouts
        dataProcessing {
            10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
            10 {
                table = tx_xxxelements_box
                orderBy = sorting
                where {
                    data = field:uid
                    intval = 1
                    wrap = tt_content=|
                }
                as = boxitems
            }
        }
    }
}

使用普通流体渲染,如

<f:for each="{boxitems}" as="boxitem">
  <boxitem.header>...
</f:for>

所以一切正常,只要我将它用作放置的常规内容元素 在页面上。现在我将一个元素放入存储文件夹并尝试通过typoscript在所有页面上重用此元素 其中10是内容元素的ID

lib.SubFooter = COA
lib.SubFooter {
    10 = RECORDS
    10 {
        tables = tt_content
        source = 10
    }
}

lib被渲染正确,但“boxitems”数组在所有页面上都是空的: - (

现在有趣的部分: 如果我将ID为10的元素放在页面上,则会为元素和lib填充boxitems数组...

以下是针对不同情况的变量转储的图像: element, lib, element+lib

1 个答案:

答案 0 :(得分:0)

也许你错过了pid; - )

    dataProcessing {
        10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
        10 {
            ....
            pidInList.field = pid

你可以在这种情况下简化where子句:

            where.dataWrap = tt_content={field:uid}

因为你不能与外面的变种匹配......