将 Fluid 变量传递给 TypoScript

Pass Fluid variable to TypoScript

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

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

然后我想使用 var 获取 pid 942 和类别 {setting.myvar}

的文件夹中的所有内容元素
lib.testFluid = COA
lib.testFluid = CONTENT
lib.testFluid {
table = tt_content
    select {
    pidInList = 942
    where = selected_categories = |

}

}

这不起作用,它会产生 MySql 语法错误。我也尝试使用 current = 1 而不是 where 子句但没有成功。我查看了 post ,我可以重新创建它,但它不适用于我的脚本。 (打字错误3 8) 如果我使用

...
    where = selected_categories = 13
....

该脚本将成功显示类别为 13 的所有 CE。我如何使其与 var 一起使用?

你能试试这个吗:

<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=|
    }
}

对我来说很难测试,但它可能有用...

我不得不用马克笔解决了一次。我找不到另一种更简单的方法。我给你一个非常通用的解决方案,你可以根据自己的需要进行调整。例如,您可以通过拼写错误设置来设置 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
}