Zum Inhalt springen

abfrage, ob feld in sys_file_reference leer ist

Erstellt am 19. Dezember 2017 · 8 Antworten · letzte Antwort am 3. Januar 2018

Tags: TYPO3 8, Frage

wini2 ·

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

Teisinger ·

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>

wini2 ·

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 ·

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

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.

wini2 ·

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 ·

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 🙂

wini2 ·

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 ·

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 🙂

wini2 ·

ich komme nochmal auf das zugreifen in der flexform zurück; seit 8.4 soll das einfach möglich sein --> https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Data.html#confval-data-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