0

我正在使用 Typo3 6.0 和新闻系统 2.0。我有一个使用流体视图助手的自定义模板,我根据它们的类别显示来自我的数据库的新闻。到目前为止一切顺利,没有问题。

我的问题是我想遍历所有新闻记录(在表 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>

感谢您的时间。

4

1 回答 1

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 视图(在文件夹 Templates 中)的迭代中传递给 List/Item 部分,因此您无法在部分中重复此迭代,因为您只有一个新闻 obj 可用。

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

于 2013-06-21T06:57:35.607 回答