TYPO3 / FAL: Pages Language Overlay und Media / FILES (Lokalisierungen)

Nachdem ich vor einiger Zeit schon mal etwas zum Auslesen von Dateien aus dem File Abstraction Layer bzw. sys_file_references, die innerhalb von Pages / Seiten eingebunden sind, geschrieben habe, möchte ich hier noch einen kleinen Nachschlag servieren. Und zwar betrifft dieser Artikel das auslesen von Dateien aus den Übersetzungen von Seiten bzw. Pages.

Da ich die TYPO3 „pages“ Tabelle gerne mal um ein paar Felder erweitere bzw. missbrauche, stoße ich immer wieder auf das Problem mit den Übersetzungen. Wie allgemein bekannt, nutzt TYPO3 dazu die Tabelle „pages_language_overlay“, anstatt wie bei der Lokalisierung von anderen Datensätzen, dieselbe Tabelle zu verwenden.
Gerade bei Queries mit Extbase im Zusammenhang mit pages_language_overlay gibt es immer wieder Probleme, weshalb ich auch schon lange mal ein richtiges Extbase Model für pages / pages_language_overlay schreiben möchte.

Egal, zurück zum Thema:
Ich möchte den Inhalt des anderen Artikels hier nicht kopieren, also schaut bitte dort nochmal nach den Grundvoraussetzungen nach. Dort soll eine Textdatei aus den Seiteneigenschaften ausgelesen und ausgegeben werden, wozu ich das Typoscript-Objekt „FILES“ zusammen mit „FILE“ verwende.
Bei demselben Projekt muss ich mich auch mit Lokalisierung beschäftigen, die Zeilen 4 und 5 aus dem Typoscript nicht funktionieren können und sogar einen Fatal Error hervorrufen können:

#1: PHP Catchable Fatal Error: Argument 3 passed to TYPO3\CMS\Frontend\Page\PageRepository::getFileReferences() must be an array, null given

Um dieses Problem zu lösen müsst ihr das Feld (in meinem Fall „headinject“) natürlich auch in der Tabelle pages_language_overlay hinzugefügt und im Backend verfügbar haben. Das Standardfeld „media“ ist natürlich sowieso schon in den Lokalisierungen vorhanden.

Anschließend müsst ihr das Typoscript der deutschen Version in einer Condition auf die Sprache, wie folgt überschreiben:

# L=1 für meine englische Variante
[globalVar = GP:L = 1]
page.headerData.555 {
   references {
      table = pages_language_overlay
      uid.data = page:_PAGES_OVERLAY_UID
   }
}
[global]

12 Kommentare

  • Pingback: TYPO3 / FAL: Dateipfad auslesen und Inhalt einbinden mit FILE / FILES | Web Dev Log

  • Hallo,

    ich habe folgenden Code und möchte diesen Slider in allen Sprachen ausgeben.
    Leider funktioniert dieser nur in der Standardsprache, Gibt es hier eine Lösung?

    sys_language_mode = content_fallback
    sys_language_overlay = 1
    
    10 =  FILES
    10 {
      references {
        table =  pages    
        data = levelmedia:-1, slide    
        treatIdAsReference = 1  
      }    
      sorting = sorting_foreign  
      maxItems = 4    
      renderObj = COA  
      renderObj {        
        10 = IMAGE    
        10 {            
          file {        
            import {          
              data = file:current:publicUrl        
            }                
            width = 1100c        
            #height = 420c      
          }            
          altText.data = file:current:description          
        }        
        wrap = <li>|</li>  
      }    
      stdWrap {    
        wrap = <ul id="slider">|</ul>      
      }
    }
    
    • Hallo Stefan,

      wie es schon im Beitrag steht musst Du das FILES Objekt ein wenig modifizieren wenn die Person eine andere Sprache benutzt. Probier mal folgendes:

      [globalVar = GP:L = 1]
      pfad.zum.objekt. 10 {
         references {
            table = pages_language_overlay
         }
      }
      [global]
      

      Falls das noch nicht ausreicht solltest Du es mal in folgende Richtung probieren:

      [globalVar = GP:L = 1]
      pfad.zum.objekt. 10 {
         references  {
            table = pages_language_overlay
            uid.data = page:_PAGES_OVERLAY_UID
            fieldName = media
         }
      }
      [global]
      

       

  • Hallo Paul,

    danke für deine Antwort.

    Diese Anpassung funktioniert leider nicht bei mir. Kann es sein, weil ich

    data levelmedia:-1, slide

    verwende?

    Oder muss ich in de pageOverlayFields etwas anpassen?

    • Hallo,

      an den pageOverlays musst Du nur dann etwas verändern, wenn du das Feld Media in den Übersetzungen von Seiten nicht hast.

      Ansonsten könntest Du mit data recht haben, bitte nochmal folgendes probieren:

      [globalVar = GP:L = 1]
      pfad.zum.objekt. 10 {
         references  {
            table = pages_language_overlay
            uid.data = page:_PAGES_OVERLAY_UID
            fieldName = media
      data >
         }
      }
      [global]
  • Hallo,

    das ändert leider auch nichts.

    Macht vielleicht das „levelmedia:-1, slide“ Probleme?

    • Müsste ich mir selber mal an einem eigenen Projekt angucken, weiß aber noch nicht wann ich dazu komme. Deine TYPO3 Version wäre bei der Ursachenforschung jedoch noch interessant.

  • Das wäre Hammer.
    Typo3 7.6.3

  • Pingback: bei mehrsprachigen Webseiten beim textpic-Inhalt Image vom default Sprache übernehmen

Schreibe einen Kommentar zu Paul Beck Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.