Domanda

Voglio stampare il seguente HTML solo se uno o più colpi hanno contento in esso.Se nessuno ha in esso gli elementi di contenuto, non voglio stampare questo blocco (l'intera "riga") di 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>
.

Ho pensato di ottenere il colpo e provare a fare una o condizione sul liquido.Ma non ho idea su come farlo.So che posso controllare uno per uno come questo:

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

Ma non voglio farlo.Nel mio modello ho quasi 50 diversi colpi e sono organizzati da blocchi (righe).Come il colpo 1 a 5 è un blocco (riga).colpi da 10 a 25 in un altro blocco (riga).Ma alcune pagine non utilizzeranno alcuni blocchi (righe) di Colpos, quindi non c'è motivo per la stampa del codice HTML per quei blocchi (righe) di colpi inutilizzati.

Grazie per il tuo aiuto!

È stato utile?

Soluzione

Una soluzione solo fluido sarebbe quella di assegnare i risultati dei miopia di <f:cObject>-ViewHelpers ciascuno a una variabile, quindi utilizzare la concatenazione di queste variabili in una condizione.Il V: -Nomespace nell'esempio è lo spazio dei nomi dell'estensione 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>
.

Dovresti ovviamente spostare questa roba per un parziale, che ottiene un array delle colonne da stampare come parametro.Quindi è necessario scrivere la logica solo una volta.

Inoltre, dovresti ripensarti di nuovo, se tu veramente bisogno di 25 colonne.

Altri suggerimenti

Dal momento che Typo3 8.6, questo è possibile senza estensione "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>
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top