[Frage] Generelle Hilfe zu Fluid Styled Content

  • 3dxO 3dxO
    R2-D2
    0 x
    122 Beiträge
    1 Hilfreiche Beiträge
    07. 05. 2021, 09:48

    Hallo, ich versuche krampfhaft endlich mal dieses Fluid zu verstehen. Wo finde ich z.B. Informationen darüber wie ich auf die Ressourcen einer Seite (z.B. Bilder) zugreifen kann.

    Konkret möchte ich eine Anzeige der Unterseiten haben, mit folgender Struktur:
    [code]<f:layout name="Default" />
    <f:section name="Main">
    <div id="teaser">
    <f:if condition="{menu}">
    <f:for each="{menu}" as="page">
    <div>
    <img src="hier das Bild aus der Seitenressource" alt="">
    <h1>{page.title}</h1>
    <!-- Hier den Inhalt der Zusammenfassung aus den Metadaten -->
    <span class="lnk"> <a href="{page.link}"{f:if(condition: page.target, then: ' target="{page.target}"')} title="{page.title}">Weiterlesen</a> </span>
    </div>
    </f:for>
    </f:if>
    </div>
    </f:section>
    [/code]

    Der Titel, sowie der Link funktioniert. Das habe ich aus MenuSubpages.html gezogen.

    Ist so etwas überhaupt möglich? Oder bin ich schon wieder auf dem Holzweg? Wo finde ich einen Überblick über die möglichen Elemente wie page.title usw.


  • 1
  • 0 x
    3263 Beiträge
    156 Hilfreiche Beiträge
    08. 05. 2021, 20:03

    Dein "Problem", über das Du stolperst, ist, dass TYPO3 (und Fluid) sehr flexibel sind ;-) Das hat leider auch zur Folge, dass es selten *die* Dukumentation für etwas gibt, sondern ggf. auch verschiedene kombiniert werden müssen.

    Für Dein Vorhaben brauchst Du den Image-ViewHelper f:image - denke, das ist noch klar. Woher aber nun die Resource nehmen?

    Da kommen wir zu den DataProcessors. Diese können innerhalb eines FLUIDTEMPLATE-Objektes konfiguriert werden (und die CEs, die Fluid Styled Content registriert, sind genau solche FLUIDTEMPLATE-Objekte).
    https://docs.typo3.org/m/typo3/reference-typoscript/10.4/en-us/ContentObjects/Fluidtemplate/DataProcessing.html#dataprocessing

    Anhand Deiner Beschreibung mit {menu} gehe ich davon aus, dass die Daten zu den Seiten bereits via MenuProcessor ausgelsen werden. Innerhalb kannst Du dort nochmal einen DataProcessor konfigurieren und auf Dateien zugreifen bzw. diese aufbereiten (FilesProcessor).
    In der Doku ist ein gutes Beispiel dieser Verschachtelung zu finden (wenngleich bei DatabaseQueryProcessor - funktioniert aber im MenuProcessor genauso):
    https://docs.typo3.org/m/typo3/reference-typoscript/10.4/en-us/ContentObjects/Fluidtemplate/DataProcessing.html#databasequeryprocessor

    ...und Kopf nicht in den Sand stecken. Frag ggf. einfach nochmal weiter :-)

  • 0 x
    3263 Beiträge
    156 Hilfreiche Beiträge
    08. 05. 2021, 20:09

    Zitiert von: 3dxO
    Wo finde ich einen Überblick über die möglichen Elemente wie page.title usw.

    Gibt zwei Möglichkeiten, um einen Überblick zu bekommen:
    - Datenbank: schau Dir die Spalten der Tabelle 'pages' an
    - f:debug: Damit kannst Du Dir eine beliebige Variable (auch Arrays und Objekte) in Fluid ausgebenlassen (ähnlich var_dump() in PHP)

  • 3dxO 3dxO
    R2-D2
    0 x
    122 Beiträge
    1 Hilfreiche Beiträge
    25. 05. 2021, 11:21

    Vielen Dank! und sorry für die späte Reaktion, aber ich habe massive Probleme hier ins Forum zu gelangen "Oops, an error occurred!" :)...

    ich schau mir das im Detail weiter an, bin zwischenzeitlich auch schon weiter gekommen und habe tatsächlich einiges gelernt. f:debug hat mir da echt geholfen

  • 3dxO 3dxO
    R2-D2
    0 x
    122 Beiträge
    1 Hilfreiche Beiträge
    28. 05. 2021, 10:19

    Hallo, da bin ich wieder :)
    ich habe folgendes Problem, im Fluid-Template möchte ich Bildinformationen anzeigen, bekomme aber folgende Fehlermeldung:
    Cannot access protected property TYPO3\CMS\Core\Resource\FileReference::$mergedProperties
    das Gleiche, wenn ich metaDataAspect verwenden möchte.

    ich kann mir mittels Debug alles anzeigen lassen, aber danach nicht drauf zugreifen:
    [code]<f:for each="{files}" as="row">
    <pre><f:debug inline="true">{row}</f:debug></pre>
    </f:for>
    [/code]

    row.originalFile.properties.size funktioniert, aber ich komme einfach nicht an die Felder description, title, width und height...

    hier mal mein FluidTemplate:
    [code]<div class="images" data-folder>
    <f:for each="{files}" as="row">
    <f:comment></f:comment><pre><f:debug inline="true">{row}</f:debug></pre>
    <div>
    <f:image src="fileadmin/{row.originalFile.identifier}" width="200" alt=""/>
    <div class="overlay">
    <h3>{row.mergedProperties.title}</h3>
    <p>
    {row.mergedProperties.width}x{row.mergedProperties.width} px<br>
    ~<f:format.bytes>{row.originalFile.properties.size}</f:format.bytes>
    </p>
    <a href="fileadmin/{row.originalFile.identifier}" target="_blank">herunterladen</a>
    </div>
    </div>
    </f:for>
    </div>
    [/code]

  • 3dxO 3dxO
    R2-D2
    0 x
    122 Beiträge
    1 Hilfreiche Beiträge
    28. 05. 2021, 12:05

    okidoki... row.originalFile.properties enthält doch mehr, als in der gesammten Debug-Ausgabe angezeigt wird. Wenn man sich nur dir properties über f:debug anzeigen lässt sieht die Sache schon ganz anders aus :)

    funzt also

  • 1