Typo3 - 流体 - 为每个newsItem.uid

时间:2013-06-20 17:48:36

标签: loops for-loop typo3 fluid tx-news

我正在使用Typo3 6.0和News System 2.0。 我有一个使用流体viewhelpers的自定义模板,我正在根据他们的类别显示我的数据库中的新闻。 到目前为止这么好,没问题。

我的问题是我想循环遍历所有新闻记录(位于表tx_news_domain_model_news中),因此我可以使用条件来过滤显示哪些记录,但到目前为止,我的尝试似乎都是徒劳的。

为什么可以循环播放这样的新闻类别:

<f:for each="{newsItem.categories}" as="category">
     <f:if condition="{category.uid} == 9">
           {category.title} #this is displayed correctly.
     </f:if>
</f:for>

但是当我尝试遍历newsItem.uid时,它不起作用?

<f:for each="{newsItem.uid}" as="pub">
        <f:if condition="{pub} == 5">
             {pub.title}
        </f:if>
</f:for>

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

你搞砸了一些东西(实际上@Shufla告诉了它)。

所有语言中的

for each语句允许您迭代通过某种集合。在这种情况下,每个newsItem都可以连接一些categories,因此您可以为每个项目迭代其类别(对象)。在伪代码中它类似于:

<f:for each="[cat1,cat2,cat3]" as="currentObject">
    {currentObject.property}
</f:for>

TYPO3中的UID始终是一个整数,并且是唯一的,因此无法迭代它,导致伪代码看起来像那样(必须失败):

<f:for each="1" as="currentObject">
    {currentObject.property}
</f:for>

我不知道新闻的观点,但我只是假设这会起作用:

<f:for each="{news}" as="pub">
        <f:if condition="{pub.uid} == 5">
             {pub.title}
        </f:if>
</f:for>

但是请确保您不再执行 - 嵌套迭代,也许您已经在默认视图的迭代中拥有所需的一切?

修改

正如您所看到的,newsItem从News / List.html视图中的迭代(在文件夹模板中)传递给List / Item partial,因此您无法在partial中重复此迭代,因为您只有一个新闻obj可用。

如果您希望/需要进行一些条件迭代,请在视图中执行:/typo3conf/ext/news/Resources/Private/Templates/News/List.html