Typo3 Fluid - 2つ以上のColposにコンテンツがあるかどうかを確認してからHTMLを印刷する方法
-
20-12-2019 - |
質問
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>
. 所属していません StackOverflow