Question

Je veux imprimer le HTML suivant uniquement si un ou plusieurs des colpos sont contenus dedans.Si aucun n'a d'éléments de contenu, je ne veux pas imprimer ce bloc (l'ensemble de la "ligne") de 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>

J'ai pensé à obtenir les colpos et à essayer de faire un ou des conditions de liquide.Mais je n'ai aucune idée de la façon de le faire.Je sais que je peux en vérifier un à un comme celui-ci:

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

Mais je ne veux pas faire ça.Dans mon modèle, j'ai presque 50 colpos différents et ils sont organisés par des blocs (rangées).Comme Colpos 1 à 5 est un bloc (rangée).colpos 10 à 25 dans un autre bloc (rangée).Mais certaines pages n'utiliseront pas de blocs (rangées) de colpos, il n'ya donc aucune raison d'imprimer le code HTML pour ces blocs (lignes) de colpos nonis.

Merci pour votre aide!

Était-ce utile?

La solution

Une solution uniquement sur les fluides serait d'attribuer les résultats des menuisiers généreux-scellés à une variable, puis utilisez la concaténation de ces variables dans une condition.Le V: -Namespace dans l'exemple est l'espace de noms de l'extension 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>

Vous devriez bien sûr déplacer ce produit à une partie partielle, qui obtient une matrice des colonnes à imprimer en tant que paramètre.Ensuite, vous devez écrire la logique une seule fois.

Aussi, vous devriez répéter à nouveau, si vous vraiment besoin de 25 colonnes.

Autres conseils

Depuis TYPO3 8.6, cela est possible sans extension "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>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top