Bernd: Typo3: Suchfilter beim Zugriff auf Resourcen der Page

Hallo,

folgendes Szenario:
Ein Redakteur kann im Backend in den "Page-Properties" einer "Page" unter "Resources" ein Bild anfuegen. Dieses moechte ich dann via TS auslesen und im Template als Inline-CSS verarbeitne. Hintergrund ist der, dass ich somit ohne groeszeren Aufwand (so zumindest der Plan ooOO) dynamische Hintergrundbilder ermoeglichen kann.

Mein Script macht derzeit folgendes:

lib.backgroundImage = TEXT
lib.backgroundImage {
  data = levelmedia:-1, slide
  listNum = 0
  wrap (
      <style type="text/css">
          body { background-image: url(uploads/media/|); }
      </style>
  )
}
page.headerData.10 < lib.backgroundImage

Klappt auch wunderbar, allerdings wuerde ich gerne nicht direkt auf den ersten Eintrag (listNum=0) zugreifen - da hier mehrere Bilder fuer diverse Zwecke hochgeladen werden koennen - , sondern hier nach einem bestimmten Filepattern suchen. Also zb nach "header_*.*". Damit liefert er mir nur exakt das Bild, welches auch fuer den Header bestimmt ist.

Nun mein groszes Fragezeichen?
Wie geht das? Wo kann ich hier einen Filter angeben?

Nach Stunden rumgesuche und -probiere bin ich fuer jeden Tip dankbar!

MfG
Bernd

  1. data = levelmedia:-1, slide

    hier solltest du mit levelfield arbeiten, da macht die Migration des auf andere Feldnamen einfacher.

    Nach Stunden rumgesuche und -probiere bin ich fuer jeden Tip dankbar!

    Das geht nur mit einer userFunc ist aber sehr umständlich.

    Du kannst hier in einem stdWrap mit mit einem Trennzeichen arbeiten - das ist per default ein Komma, kann aber auch ein anderes sein - aber eben keine Kette oder gar ein Ausdruck.

    Die einfachste Variante ist aber imho ein zusätzliches Feld in der pages-Tabelle ergänzen welches nur diesem Zweck dient. Es ist eine unart, das media-Feld mit allen möglichen Infos zuzumüllen bzw. Inhalte verschiedener Art zu mischen.

    Besonders wenn du mit Slide arbeitest, bricht dir das sonst das Genick da du nicht davon ausgehen kannst, dass jedes Feld korrekt befüllt ist - besonders wenn die Site umfangreicher wird. Vom Wartungsaufwand reden wir besser garnicht.

    1. Hallo suit,

      danke fuer deine Antwort.

      hier solltest du mit levelfield arbeiten,

      Das kannse ich noch nicht, werde es mir anschauen

      Die einfachste Variante ist aber imho ein zusätzliches Feld in der pages-Tabelle

      Interessant. Kann ich einfach die DB-Tabelle werweitern und das landet dann in der GUI, oder wie habe ich mir das vorzustellen?

      Besonders wenn du mit Slide arbeitest, bricht dir das sonst das Genick da du nicht davon ausgehen kannst, dass jedes Feld korrekt befüllt ist

      Wieso? Wenn auf der ersten Ebene (root) ein Bild angegeben ist, dann ist dies ja das Fallback-Bild. Folglich ist immer ein Hintergrund angegeben.
      Wenn eine Seite einen eigenen Hintergrund angibt, so wird dieser genommen. Und wenn nicht, dann der des Roots.

      Grusze,
      Bernd

      1. Die einfachste Variante ist aber imho ein zusätzliches Feld in der pages-Tabelle
        Interessant. Kann ich einfach die DB-Tabelle werweitern und das landet dann in der GUI, oder wie habe ich mir das vorzustellen?

        Jein - du musst einerseits das TCA erweitern - das ist das Konfigurationsarray für das Backend und andererseits ein Feld in der Datenbank erstellen.

        Prinzipiell ist dafür eine Extension mit "3 Files" notwendig: ext_tables.php (für die Erweiterung des TCA), ext_tables.sql (für das Erweitern der Tabelle selbst) und ext_localconf.php (um das neue Feld in der rootline hinzuzufügen, sonst geht der slide nicht) - nebst denen natürlich noch die für die Extension allgemein nötigen Files.

        Codeaufwand geschätzt etwa 10 bis 20 Zeilen.

        Wenn du nicht sicher bist, wie das geht nimm einfach den Extension Kickstarter und erstelle damit eine Extension - da ist zwar eine Menge overhead und unnötiger code dabei den man nicht braucht, aber das ist ansich egal - landet ohnehin im Cache.

        Ganz im Zweifel biete ich natürlich auch Dienstleistungen an - aufwand dafür ist geschätzt eine halbe Stunde wenn man das in eine ordentliche, wiederverwendbare Extension verpackt.

        Besonders wenn du mit Slide arbeitest, bricht dir das sonst das Genick da du nicht davon ausgehen kannst, dass jedes Feld korrekt befüllt ist
        Wieso? Wenn auf der ersten Ebene (root) ein Bild angegeben ist, dann ist dies ja das Fallback-Bild. Folglich ist immer ein Hintergrund angegeben.
        Wenn eine Seite einen eigenen Hintergrund angibt, so wird dieser genommen. Und wenn nicht, dann der des Roots.

        Natürlich, aber wenn du mehrere Elemente im media-Feld hast, wird es auf den Unterseiten schwierig.

        Angenommen du packst da ein Logo und das Hintergrundbild rein: wenn du jetzt auf einer Unterseite nur eines der beiden ändern und das anderen vererben willst hast du ein problem da du nicht sagen kannst "mach den slide nur, wenn das 1. Element fehlt aber das zweite vorhanden ist " denn das zweite Element ist dann notwendigerweise das erste Element und nicht mehr unterscheidbar - zumindset nicht in einer kommaseapierten Liste.