使用流体过滤/删除重复条目

时间:2016-11-01 10:33:46

标签: duplicates typo3 fluid

我正试图找到一种方法来清除使用流体的重复条目。这个想法是使用f:alias然后计算具有相同标题的项目。

但我的结果很荒谬。计数是完全错误的。 整体上可以做一些像流体那样的东西吗?

我试过这样:

    <f:alias map="{client: '{newsItem->f:count()}'}">
        <f:if condition="{client -> f:count()}==1">
            <f:then>
                <f:if condition="{newsItem.teaser}">        

                    <f:then>
                        <span itemprop="description">{newsItem.teaser -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}</span>
                    </f:then>
                    <f:else> 
                        <p>There are {newsItem} records in database</p>
                        <li>{newsItem.txPblcexpandnewsClient}</li>      
                    </f:else> 
                </f:if> 
            </f:then> 
            <f:else> 
                else 1       
            </f:else>  
        </f:if>         
    </f:alias>

Beste问候

蓝色

2 个答案:

答案 0 :(得分:1)

对于逻辑上下文,不应使用流体。如果它复杂,它属于控制器。

但是尝试使用按标题分组的ViewHelper组。

答案 1 :(得分:0)

正如雷内已经说过的那样:避免这种逻辑流畅!

但如果你真的不能以另一种方式做到这一点,那么解决方案可能是:
使用ext:vhs在流体中动态定义和更改变量 所以你可以做Gruppenverarbeitung&#39; (我不知道这个德语术语的翻译):

&#13;
&#13;
<v:variable.set name="lastitem" value="" />
<f:for each="items" as="item" iteration="iterator">
  <f:if condition="{lastitem}">
    <f:then>
      <f:if condition="{lastitem.title} == {item.title}">
        <f:then>
          <f:comment>just one item more</f:comment>
          <v:variable.set name="counter">
            <f:cObject typoscriptObjectPath="lib.calc">{counter}+1</f:cObject>
          </v:variable.set>
        </f:then>
        <f:else>
          <f:comment>output last item</f:comment>
          <f:render partial="showItem" arguments="{item:lastitem, counter:counter}" />
          <f:comment>store new item, reset counter</f:comment>
          <v:variable.set name="lastitem" value="{item}" />
          <v:variable.set name="counter" value="1" />
        </f:else>
      </f:if>
    </f:then>
    <f:else>
      <f:comment>init variables</f:comment>
      <v:variable.set name="lastitem" value="{item}" />
      <v:variable.set name="counter" value="1" />
    </f:else>
  </f:if>
</f:for>
<f:if condition="{lastitem}">
  <f:comment>output last item, if any</f:comment>
  <f:render partial="showItem" arguments="{item:lastitem, counter:counter}" />
</f:if>
&#13;
&#13;
&#13;