TYPO3 - 如何正确定义常量,将其存储到变量中并使用流体模板内部

Den*_*vic 5 typo3 fluid

在我正在研究的插件的Fluid模板中,有些东西是硬编码的.例如:

<f:else>
                <li>
                    <v:page.link pageUid="114" />
                </li>
            </f:else>
Run Code Online (Sandbox Code Playgroud)

由于pageUid值在测试和生产服务器上不相同,我想让它更具动态性.

我想以某种方式将其存储在变量中,然后在流体模板中使用该变量.

我只是不知道热卖这个和TYPO3的地方.

提前致谢!

Ren*_*amm 9

因为它是一个设置,它是这样的:

常量:

plugin.myext.settings.detailPid = 123
Run Code Online (Sandbox Code Playgroud)

建立:

plugin.myext.settings.detailPid = {$plugin.myext.settings.detailPid}
Run Code Online (Sandbox Code Playgroud)

变量用于可变内容.如果使用TEXT或类似的变量使用相同的PID,则过度使用并且设置是正确的方法.

此外,变量只能用于FLUID_TEMPLATE内容元素,而不能用于插件!

此外,在您的extbase控制器中,您可以通过简单访问来访问这些设置,$this->settings['detailPid']而无需先呈现cObject.

在流体中,您可以访问设置{settings.detailPid}.


jok*_*mer 5

在您的内容对象 FLUIDTEMPLATE 的排版模板中:

打字稿设置/配置:

10 = FLUIDTEMPLATE
10 {
    variables {
        pageUid = TEXT
        pageUid.value = 114
    }
}
Run Code Online (Sandbox Code Playgroud)

或使用常量

排版常量:

pageUid = 114
Run Code Online (Sandbox Code Playgroud)

打字稿设置/配置:

10 = FLUIDTEMPLATE
10 {
    variables {
        pageUid = TEXT
        pageUid.value = {$pageUid}
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以pageUid在你的 Fluid HTML 中获取

<f:else>
    <li>
        <v:page.link pageUid="{pageUid}" />
    </li>
</f:else>
Run Code Online (Sandbox Code Playgroud)

要在 Fluid partial 中使用变量,请确保传递这些变量,例如通过提供_all

<f:render partial="fluid_part_header" arguments="{_all}" />
Run Code Online (Sandbox Code Playgroud)