Zum Inhalt springen

FLUID: if-Verzweigung vereinfachen

Erstellt am 21. Januar 2015 · 1 Antwort · letzte Antwort am 21. Januar 2015

Tags: Fluid, DCE, Frage

alfredbez ·

Moin,
ich stand schon mehrfach vor dem Problem, dass mein FLUID-Code durch einfache if-Verzweigungen aufgeblasen wird.

Wir nutzen auf einer Seite ein DCE, welches unter anderem ein Bild darstellt. Wenn das Feld '{field.link}' einen Wert hat, soll das Bild verlinkt sein. Kann ich folgenden Code so schreiben, dass ich nur einmal '<f:image>' benutzen muss, um das Bild '{field.img}' anzuzeigen?

Hat jemand generell Verbesserungsvorschläge/Tipps um den Code zu verbessern?

{namespace dce=Tx_Dce_ViewHelpers}
<f:layout name="None" />

<f:section name="main">
  <div class="b-infobox">
    <b class="b-infobox__title">{field.title}</b>
    <f:if condition="{field.img}">
      <f:if condition="{field.link}">
        <f:then>
          <f:link.page pageUid="{field.link}">
            <f:image src="uploads/pics/{field.img}"  width="275" alt="{field.title}" class="b-infobox__img" />
          </f:link.page>
        </f:then>
        <f:else>
          <f:image src="uploads/pics/{field.img}"  width="275" alt="{field.title}" class="b-infobox__img" />
        </f:else>
      </f:if>
    </f:if>
    <span class="b-infobox__text"><f:format.html>{field.text}</f:format.html></span>
    <f:if condition="{field.pdf}">
      <f:if condition="{field.hidePdfThumbnail} == 0">
        <f:image src="uploads/pdfs/{field.pdf}"  width="275" alt="{field.title}" class="b-infobox__img" />
      </f:if>
      <ul class="b-pdf-buttons stack-for-small button-group">
        <li><span class="b-pdf-buttons__button button tiny pdf-link--preview"><i class="fa fa-eye"></i> <f:translate key="{tsSetup.lib.lll.value}preview" /></span></li>
        <li>
          <f:link.page class="b-pdf-buttons__button button tiny pdf-link--download" additionalAttributes="{download:true}" pageUid="/uploads/pdfs/{field.pdf}"><i class="fa fa-download"></i> <f:translate key="{tsSetup.lib.lll.value}download" /></f:link.page>
        </li>
      </ul>
    </f:if>
  </div>
</f:section>
toifel ·

Du könntest einen eigenen Image ViewHelper schreiben, an den field.img und field.link übergeben werden können... wäre etwas übersichtlicher im Template, aber meiner Meinung nach den Aufwand nicht wert.
Sieht soweit alles sauber aus.