【问题标题】:Pass Fluid variable to TypoScript将 Fluid 变量传递给 TypoScript
【发布时间】:2017-11-16 16:26:03
【问题描述】:

我想将 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 子句但没有成功。我查看了TYPO3: pass variable to typoscript via cObject? 的帖子,我可以重新创建它,但它不适用于我的脚本。 (TYPO3 8) 如果我使用

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

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

【问题讨论】:

    标签: typo3 typoscript fluid


    【解决方案1】:

    你可以试试这个:

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

    对我来说很难测试,但它可能会起作用......

    【讨论】:

    • 如果您在数据数组中添加更多值,您可以使用多个值。所以页面 uid 也可以是一个参数。
    【解决方案2】:

    我不得不用标记解决一次。我找不到其他更简单的方法。我给你一个非常通用的解决方案,你可以根据自己的需要进行调整。例如,您可以通过打字稿设置来设置 pid 值,这比将其放在 sn-p 代码中更优雅。请尝试:

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

    相关的 TypoScript sn-p:

    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
    }
    

    【讨论】:

    • 如果您在where 上使用cObject 并进行适当的包装,您可能可以避免使用LOAD_REGISTER
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2012-02-13
    • 2014-09-05
    • 2011-10-13
    • 2013-12-07
    • 2014-04-30
    • 2014-12-02
    相关资源
    最近更新 更多