0

Typo3 6.0 と News System 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すべての言語でステートメントを使用すると、ある種のコレクションを反復処理できます。この場合、every に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 が 1 つしかないため、パーシャルでこの反復を繰り返すことはできません。

条件付きの反復を行う必要がある場合は、ビューで実行します。/typo3conf/ext/news/Resources/Private/Templates/News/List.html

于 2013-06-21T06:57:35.607 に答える