[Frage] abfrage, ob feld in sys_file_reference leer ist TYPO3-Version: 8.7.6

  • wini2 wini2
    Jedi-Meister
    0 x
    286 Beiträge
    0 Hilfreiche Beiträge
    19. 12. 2017, 14:41

    hallo,

    ich verwende die extension t3s_headerslider, bei der ich unter seiteneigenschaften bilder für den slider meines jumbotrons auswähle (im tab headerslider, also nicht unter ressourcen, media). ich möchte die ausgabe des jumbotrons davon abhängig machen, ob bilder ausgewählt sind. wenn ich es recht verstehe, müsste ich abfragen, ob in der sys_file_reference tabelle für die jeweilige seite das feld headerslider (das die ext. dort angelegt hat) nicht leer ist.

    es wäre schon, wenn mir jemand sagt, ob ich da falsch liege oder mir einen tipp für die abrage geben könnte.

    vielen dank


  • 1
  • Teisinger Teisinger
    Jedi-Meister
    0 x
    311 Beiträge
    20 Hilfreiche Beiträge
    19. 12. 2017, 20:42

    Tja ich kenne die Ext nicht, aber wenn sie mit Fluid arbeitet, musst du mal dort in die Templates gucken und mal <f:debug>{_all}</f:debug> rein schreiben, dann siehst du was dir alles zur Verfügung steht.
    In Fluid musst du dann "nur" noch an der richtigen Stelle deine IF Bedingung schreiben etwa:

    <f:if condition="{data.filereference}">
    <f:then></f:then>
    <f:else></f:else>
    </f:if>

    https://github.com/groundstack-org

  • wini2 wini2
    Jedi-Meister
    0 x
    286 Beiträge
    0 Hilfreiche Beiträge
    19. 12. 2017, 23:15

    hallo teisinger,

    danke für den tipp, leider spuckt debug nichts wirklich nützliches aus. die ext. arbeitet mit fluid, wie schon erwähnt, nutzt sie aber nicht das media feld, in dem ja in der db eine zahl steht, die man abfragen kann.

    debug liefert für t3s_headerslider ungefähr sowas

    headerslider => ' <div id="t3s-headerslider" class="carousel slide"
    data-ride="carousel"> <ol class="carousel-indicators"> <li da
    ta-target="#t3s-headerslider" data-slide-to="0" class="active"></li>
    <li data-target="#t3s-headerslider" data-slide-to="1" ></li> <li
    data-target="#t3s-headerslider" data-slide-to="2" ></li> <li data-
    target="#t3s-headerslider" data-slide-to="3" ></li> <li data-target
    ="#t3s-headerslider" data-slide-to="4" ></li> </ol> <div class="ca
    rousel-inner"> <div class="carousel-item active"> <a href="index
    .php?id=27#c115"> <img class="d-block w-100" style="height: auto;" a
    lt="slide-51" src="fileadmin/_processed_/8/6/csm_1920-550-Allgaeuer_Alpen_Pa
    norama_1_b604f3d3e2.jpg" width="1140" height="400" title="bild in headerslid
    er" /> </a> <div class="carousel-caption d-none d-md-block">
    <h3> <a href="index.php?id=27#c115"> bild in h
    eaderslider </a> </h3> <p clas="irgdendw
    as"> <span class="semitransparent">Beschreibung (Bildunterschrift) hier ist
    auch noch etwas <strong>text</strong></span></p> </div>
    </div> <div class="carousel-item "> <img class="d-bloc
    k w-100" style="height: auto;" alt="slide-52" src="fileadmin/_processed_/7/0
    /csm_1920-550-Conseil_d_Etat_Paris_WA_f640013125.jpg" width="1140" height="4
    00" title="bild in headerslider" /> <div class="carousel-capt
    ion d-none d-md-block"> <h3> bild in headers
    lider </h3> </div> </div>
    <div class="carousel-item "> <img class="d-block w-100" style=
    "height: auto;" alt="slide-53" src="fileadmin/_processed_/d/9/csm_1920-550-H
    eidelberg_Neckar_2d23f49852.jpg" width="1140" height="400" title="bild in he
    aderslider" /> <div class="carousel-caption d-none d-md-block
    "> <h3> ...' (4027 chars)

    - also den inhalt der einträge im backend, die in der flexform gemacht sind.

    in der sys_file_reference-tablle findet sich aber auch im feld 'fieldname', das in meinem fall den wert 'headerslider' enthält, sofern dieser für die entspr. seite angeklickt ist.

    ich stelle mir also sowas wie einen stringvergleich vor, weiß aber leider nicht wie ich machen kann.

    danke für weitere tipps

  • Teisinger Teisinger
    Jedi-Meister
    0 x
    311 Beiträge
    20 Hilfreiche Beiträge
    20. 12. 2017, 21:33

    wie was verstehe ich das richtig? f:debug liefert dir eine Ausgabe mit HTML drin?
    Komische Extension... :D

    Dir bleibt dann noch der Umweg über einen eigenen Viewhelper oder über TypoScript in dem du die entprechende Tabelle mit dem entsprechenden Feld abfrägst.
    Per f:objectpath (oder so ähnlich) kannst du das TypoScript ansprechen und dem z. B. die Seiten-ID übergeben, damit TypoScript auch weiß in welcher "Zeile" es in der Tabelle suchen soll. Den Rückgabewert kannst du dann wieder mit ner f:if abprüfen ob größer 0... dann weißt du ob da was drin steht oder nicht.

    Ich glaub grad ich hab dich falsch verstanden, guck doch mal in deinem Fluid-Template wo du dein jumbodings definierst was dir f:debug _all ausgibt.
    dort sollte eigentlich alles drin stehen, wenn die Ext zum Beispiel Spalten zur page Tabelle hinzugefügt hat, ist diese wahrscheinlich befüllt (wenn Bilder hinterlegt sind) oder halt nicht.

    https://github.com/groundstack-org

  • wini2 wini2
    Jedi-Meister
    0 x
    286 Beiträge
    0 Hilfreiche Beiträge
    21. 12. 2017, 17:41

    hallo teisinger,

    danke nochmals für die antwort.

    ich denke, so ungewöhnlich ist die ausgabe nicht - der jeweilige inhalt der flexform wird sozusagen in der db abgelegt.

    das problem besteht in meiner unkenntnis über den umgang mit dem file abstaction layer. so wie ich es verstehe, gibt es dateien, für die in der o. g. tabelle festgehalten wird, wo sie verwendet werden. in meinen fall muss ich also an diese tabelle; das würde auch für media gelten, wenn es nicht nur um die bloße abfrage geht, um rauszufinden, wieviele bilder dort ausgewählt sind.

    gruß

    wini2

  • Teisinger Teisinger
    Jedi-Meister
    0 x
    311 Beiträge
    20 Hilfreiche Beiträge
    22. 12. 2017, 23:04

    Naja man ist eher versucht HTML von der DB fern zu halten - denn man will ja die Inhalte vielleicht auch wo anders verwenden, z. B. json oder in einer App, da hat html nichts zu suchen...

    wie gesagt kann dir kaum helfen, da ich die ext nicht kenne und nicht weiß wie genau diese funktioniert bzw. wo die tabellen oder spalten erstellt etc...

    Normal gibts z. B. eine file_reference tabelle dort stehen dann IDs z. B. die vom Bild (ja auch Bilder bekommen in TYPO3 IDs :) ) die auf eine andere z. B. eine Page ID verweisen.

    Mich stellt sich gerade übrigends die Frage warum du dafür überhaupt eine Extension verwendest? Bilder aus den Seiteneigenschaften ausgeben kann man auch relativ einfach ohne extra Extension :)

    https://github.com/groundstack-org

  • wini2 wini2
    Jedi-Meister
    0 x
    286 Beiträge
    0 Hilfreiche Beiträge
    23. 12. 2017, 18:00

    ich glaube nicht, dass das so schräg ist; z. b. geht auch die ext tx_news vor. das verfahren ist vielerorts beschrieben, u. a. im TYPO3 Kochbuch oder http://www.typo3-media.com/blog/article/flexforms-und-tabs-zur-pluginkonfiguration.html

    leider fehlen mit die progrmierkenntnisse, um an die gewünschten daten zu kommen.

    das tausendfach beschriebene verfahren mit media-feld ist leider nicht ausreichend, um allen anforderungen zu genügen.

    trotzdem danke für die hilfe

  • Teisinger Teisinger
    Jedi-Meister
    0 x
    311 Beiträge
    20 Hilfreiche Beiträge
    23. 12. 2017, 22:21

    da wir hier anscheinend alleine rätzeln und wir nicht weiterkommen...:

    was macht den die Extension? Bzw. was möchtest du grundsätzlich, vielleicht können wir das ja anders lösen :)

    https://github.com/groundstack-org

  • wini2 wini2
    Jedi-Meister
    0 x
    286 Beiträge
    0 Hilfreiche Beiträge
    03. 01. 2018, 19:31

    ich komme nochmal auf das zugreifen in der flexform zurück; seit 8.4 soll das einfach möglich sein --> https://docs.typo3.org/typo3cms/TyposcriptReference/DataTypes/Gettext/Index.html?highlight=flexform#flexform oder auch https://stackoverflow.com/questions/40625082/get-flexform-configuration-in-typoscript

    leider bekomme ich es nicht auf die reihe damit für die aktuelle seite abzufragen (auszugeben), welcher wert gesetzt ist.

    vielleicht kann mir jemand auf die sprünge helfen.

    danke

  • 1