首页 > 解决方案 > FLUID 中的条件以检查列是否有内容

问题描述

我正在使用 Ben Kott 为 Typo3 9.5 编写的站点包,并将内容包含到我的流体模板中,如下所示:

<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '1'}" />

我试图把它包装成一种像液体一样的状态

<f:if condition="<f:cObject typoscriptObjectPath='lib.dynamicContent' data='{colPos: \'1\'}'">     
    whatever  
</f:if>

但它不起作用。我不知道是否有任何错误的语法或是否不可能。

标签: typo3fluidtypo3-9.x

解决方案


{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: {colPos: 1}) -> f:variable(name: 'content')}
<f:if condition="{content}">
   There is content. Here it is:
   {content -> f:format.raw()}
</f:if>
  1. 避免对打字稿对象的双重渲染、双重数据库请求等。
  2. 避免标签属性中的标签语法,这在未来的 Fluid 版本中可能无法做到

为后代编辑:上面代码失败的确切原因似乎是语法错误:

<f:if condition="<f:cObject typoscriptObjectPath='lib.dynamicContent' data='{colPos: \'1\'}'"> 

应该:

<f:if condition="<f:cObject typoscriptObjectPath='lib.dynamicContent' data='{colPos: \'1\'}' />">

由于内部标签没有关闭。不过,您仍然应该避免使用它 - 改用内联语法。在我上面的代码中,您可以删除该-> f:variable()部分,然后表达式可以用作标签属性值。


推荐阅读