Typo3流体:将类添加到元素(如果它是第一个)

Typo3流体:将类添加到元素(如果它是第一个),typo3,fluid,Typo3,Fluid,我正在使用流体将ContentElements输入到扩展中: <f:for each="{field.children}" as="myObj" iteration="iterator"> {myObj.render -> f:format.raw()} </f:for> {myObj.render->f:format.raw()} 这很好用 元素看起来像这样: <div class="childElement"> <h1>I'

我正在使用流体将ContentElements输入到扩展中:

<f:for each="{field.children}" as="myObj" iteration="iterator">
  {myObj.render -> f:format.raw()}
</f:for>

{myObj.render->f:format.raw()}
这很好用

元素看起来像这样:

<div class="childElement">
  <h1>I'm a Caption!</h1>
  <p>I'm some text.....</p>
</div>
<div class="childElement first">
  <h1>I'm a Caption!</h1>
  <p>I'm some text.....</p>
</div>
<f:for each="{field.children}" as="myObj" iteration="iteration">
 <f:if condition="iteration.isFirst">
    <f:then>
     ...

我是一个字幕!
我正在发一些短信

然后以某种方式显示元素

现在我希望第一个元素有一个名为“first”的额外类。第一个元素将如下所示:

<div class="childElement">
  <h1>I'm a Caption!</h1>
  <p>I'm some text.....</p>
</div>
<div class="childElement first">
  <h1>I'm a Caption!</h1>
  <p>I'm some text.....</p>
</div>
<f:for each="{field.children}" as="myObj" iteration="iteration">
 <f:if condition="iteration.isFirst">
    <f:then>
     ...

我是一个字幕!
我正在发一些短信


我尝试使用迭代器解决这个问题,并简单地检查迭代器是否“是第一个”。大概是这样的:

<div class="childElement">
  <h1>I'm a Caption!</h1>
  <p>I'm some text.....</p>
</div>
<div class="childElement first">
  <h1>I'm a Caption!</h1>
  <p>I'm some text.....</p>
</div>
<f:for each="{field.children}" as="myObj" iteration="iteration">
 <f:if condition="iteration.isFirst">
    <f:then>
     ...

...
但是我仍然需要插入这个类,不管怎样,我觉得必须有更好的方法来解决它

有人能给我指一下正确的方向吗


编辑(解决方案):

在我将
”包装在扩展名中,而不是在孩子身上之后,接受的答案对我有效。 我的解决方案如下所示:

<f:for each="{field.children}" as="myObj" iteration="iterator">
  <div class="childElement {f:if(condition:iterator.isFirst, then: ' first')}">
     {childDce.render -> f:format.raw()}
   </div>
</f:for>

{childce.render->f:format.raw()}

您可以简单地使用的内联版本,以避免在
->
构造中重复您自己:

<f:for each="{field.children}" as="myObj" iteration="iter">
    <div class="childElement{f:if(condition:iter.isFirst, then: ' first')}">

既然你没有别的案子,你可以放弃它。 根据流体版本的不同,可能需要使用更多的大括号来包装条件表达式,如下所示:

<f:for each="{field.children}" as="myObj" iteration="iter">
    <div class="childElement{f:if(condition: '{iter.isFirst}', then: ' first')}">


但这应该是不必要的(尽管它可以工作)。

您可以简单地使用的内联版本,以避免在
->
构造中重复您自己:

<f:for each="{field.children}" as="myObj" iteration="iter">
    <div class="childElement{f:if(condition:iter.isFirst, then: ' first')}">

既然你没有别的案子,你可以放弃它。 根据流体版本的不同,可能需要使用更多的大括号来包装条件表达式,如下所示:

<f:for each="{field.children}" as="myObj" iteration="iter">
    <div class="childElement{f:if(condition: '{iter.isFirst}', then: ' first')}">


但这不应该是必要的(尽管它是有效的)。

哇,太快了!而且成功了。(虽然我必须在渲染之前包装孩子,但因为我可以直接更改孩子,所以这不会是一个问题,而且可能是“更好的练习…”谢谢!哇,太快了!而且成功了。(虽然我必须在渲染之前包装孩子,但因为我可以直接更改孩子,所以这不会是一个问题,而且可能是“更好的练习…”谢谢!将不起作用,因为您需要在此处使用大括号:条件=“{….}”将不起作用,因为您需要在此处使用大括号:条件=“{….}”