FLUID 内的条件以检查列是否有内容

Bra*_*ley 0 typo3 fluid typo3-9.x

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

<f:cObject typoscriptObjectPath="lib.dynamicContent" data="{colPos: '1'}" />
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其包裹在液体中,例如

<f:if condition="<f:cObject typoscriptObjectPath='lib.dynamicContent' data='{colPos: \'1\'}'">     
    whatever  
</f:if>
Run Code Online (Sandbox Code Playgroud)

但它不起作用。我无法判断是否存在语法错误或者是否不可能。

Cla*_*Due 6

{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>
Run Code Online (Sandbox Code Playgroud)
  1. 避免打字稿对象的双重渲染、双重数据库请求等。
  2. 避免在标签属性内使用标签语法,这在未来的 Fluid 版本中可能是不可能做到的

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

<f:if condition="<f:cObject typoscriptObjectPath='lib.dynamicContent' data='{colPos: \'1\'}'"> 
Run Code Online (Sandbox Code Playgroud)

应该:

<f:if condition="<f:cObject typoscriptObjectPath='lib.dynamicContent' data='{colPos: \'1\'}' />">
Run Code Online (Sandbox Code Playgroud)

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