Typo3 Fluid - как я могу проверить, есть ли два или более Colpos Content, а затем напечатайте HTML

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

Вопрос

Я хочу распечатать следующий HTML только в том случае, если в нем есть один или несколько Colpos.Если в нем нет элементов содержимого, то я не хочу печатать этот блок (всю «строку») HTML.

<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 с 1 по 5 - один блок (строка).Colpos от 10 до 25 в другом блоке (строк).Но некоторые страницы не будут использовать некоторые блоки (строки) Colpos, поэтому нет причин для печати HTML-кода для этих блоков (строк) Colos неиспользованного.

Спасибо за вашу помощь!

Это было полезно?

Решение

только раствор только в жидкости будет назначать результаты расширенного просмотра генеракодичецCode-reсмотра каждое в переменную, а затем использовать конкатенацию этих переменных в состоянии.V: - проект в примере является пространство имен расширения 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