我正在使用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>
感谢您的时间。
答案 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