Typo3 Fluid - 2つ以上のColposにコンテンツがあるかどうかを確認してからHTMLを印刷する方法

StackOverflow https://stackoverflow.com//questions/25006224

質問

Colposの1つ以上のコンテンツがある場合にのみ、次のHTMLを印刷したいです。NONE NONE ITにコンテンツ要素がない場合は、このブロック( "行"の全体の "行)を印刷したくない。

<div class="row">
  <div class="col-sm-4">
      <f:cObject typoscriptObjectPath="lib.dynamicContent" data="5" />
  </div>
  <div class="col-sm-4">
      <f:cObject typoscriptObjectPath="lib.dynamicContent" data="6" />
  </div>
  <div class="col-sm-4">
      <f:cObject typoscriptObjectPath="lib.dynamicContent" data="7" />
  </div>
</div>
.

私はコルポーを入手して、液体上での又は状態をやろうと考えました。しかし、それをする方法についてはわかりません。私はこのようなものであることができることを知っています:

<f:if condition="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '5')}">
   ...HTML for colPos 5 HERE...
</f:if>
.

しかし、それをやりたくありません。私のテンプレートでは、ほぼ50の異なるColposがあり、ブロック(行)によって編成されています。Colpos 1から5のように、1ブロック(行)です。他のブロック(行)のColpos 10から25。しかし、一部のページはColposのいくつかのブロック(行)を使用しませんので、Colposの未使用のブロック(行)のHTMLコードを印刷する理由はありません。

あなたの助けをありがとう!

役に立ちましたか?

解決

流体のみの解決策は、<f:cObject>-Veehelpersの結果をそれぞれ変数に割り当て、次に条件でこれらの変数の連結を使用することです。例のv:-namespaceは、拡張子VHSのネームスペースです。

<v:variable.set name="col-5" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '5')}"/>
<v:variable.set name="col-6" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '6')}"/>
<v:variable.set name="col-7" value="{f:cObject(typoscriptObjectPath: 'lib.dynamicContent', data: '7')}"/>

<f:if condition="{col-5}{col-6}{col-7}">
    <div class="row">
        <div class="col-sm-4">{col-5}</div>
        <div class="col-sm-4">{col-6}</div>
        <div class="col-sm-4">{col-7}</div>
    </div>
</f:if>
.

もちろん、このものを部分に移動する必要があります。これは、パラメータとして印刷する列の配列を取得します。それからあなたは一度だけ論理を書く必要があります。

また、あなたが が25列を必要としている場合は、もう一度考えるべきです。

他のヒント

TYPO3 8.6以降、拡張「VHS」なしで可能です。

<f:variable name="col-5">
    <f:cObject typoscriptObjectPath="lib.dynamicContent" data="5" />
</f:variable>
<f:if condition="{col-5}">
     <f:format.raw>{col-5}</f:format.raw>
</f:if>
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top