将Fluid变量传递给TypoScript

时间:2017-11-16 16:26:04

标签: typo3 typoscript fluid

我想将Fluid中的变量(类别的uid)传递给TypoScript:

.collect(groupingBy(Map.Entry::getKey, summingDouble(Map.Entry::getValue)));

然后我想使用var来获取包含pid 942和类别{setting.myvar}的文件夹中的所有内容元素

 <f:cObject typoscriptObjectPath="lib.testFluid" data="{setting.myvar}/>

}

}

这不起作用,它会创建一个MySql语法错误。我也尝试使用current = 1而不是where子句而没有成功。我查看了帖子TYPO3: pass variable to typoscript via cObject?,我可以重新创建它,但它不适用于我的脚本。 (TYPO3 8) 如果我使用

lib.testFluid = COA
lib.testFluid = CONTENT
lib.testFluid {
table = tt_content
    select {
    pidInList = 942
    where = selected_categories = |

该脚将成功显示所有CE类别13.如何使用var?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

<f:cObject typoscriptObjectPath="lib.testFluid" data="{myvar: setting.myvar}/>

lib.testFluid = CONTENT
lib.testFluid {
    table = tt_content
    select {
        pidInList = 942
        where.data = field:myvar
        where.intval = 1
        where.wrap = selected_categories=|
    }
}

很难为我测试,但它可能有效...

答案 1 :(得分:0)

我必须用标记解决一次。我找不到另一种更简单的方法。我给你一个非常通用的解决方案,你可以适应你的需求。例如,您可以通过typoscript设置设置pid值,该设置比将其放入代码段代码更优雅。请尝试:

<f:cObject typoscriptObjectPath="lib.testFluid" data="{category: setting.myvar, catPid: 942}" currrentValueKey="category" />

相关的TypoScript代码段:

lib.testFluid = COA
lib.testFluid {
    10 = LOAD_REGISTER
    10 {
        category.cObject = TEXT
        category.cObject.value.current = 1
        catPid.cObject = TEXT
        catPid.cObject.value.dataWrap = { field: catPid }
    }
    20 = CONTENT
    20 {
        table = tt_content
        select {
            pidInList.cObject = TEXT
            pidInList.cObject.dataWrap = {REGISTER:catPid}
            where = selected_categories=###category###
            markers {
                category.data = REGISTER:category
            }
        }
    }
    30 = RESTORE_REGISTER
}