Zum Inhalt springen

Reihenfolge CONTEN renderObj / Caching-Problem?

Erstellt am 5. Dezember 2014 · Noch keine Antworten

Tags: Inhaltselemente, Cache & Performance, TYPO3 6.x, Frage

Chrissli ·

Hallo Zusammen,

hab' leider mal wieder ein kleines Problem, welches ich mir nicht wirklich erklären kann.
Mit folgendem Typoscript / PHP hole ich mir die Element-uids und -pids aus tt_content in der entsprechenden Reihenfolge und schreibe sie in ein Register um sie in meinen CONTENT-Objekten zu verwenden:

45 = COA_INT
45 {
 
  2 = USER
  2 {
    includeLibs = scripts/News/NewsController.php
    userFunc = Tools\NewsController->viewNewsOverview        
  }      

  10 = CONTENT
  10 {
    table = tt_content
    select {
      selectFields = DISTINCT tt_content.pid AS tpid
      uidInList.cObject = TEXT
      uidInList.cObject.data = register:newsUids
      pidInList.cObject = TEXT
      pidInList.cObject.data = register:newsPids
      orderBy = FIELD(uid,{register:newsUids})
      orderBy.insertData = 1
    }
    renderObj = COA
    renderObj {                    
      10 =  CONTENT
      10 {            
        table = tt_content
        select {
          pidInList.field = tpid              
          where = colPos = 15
          andWhere = uid IN ({register:newsUids})
          andWhere.insertData = 1              
          orderBy = FIELD(uid,{register:newsUids})
          orderBy.insertData = 1
        }            
        renderObj = COA
        renderObj {              
          10 < tt_content              
          10.if.equals.field = colPos
          10.if.value = 15          
        }
        stdWrap.wrap = <div class="teaser-boundary">|</div>            
      }          
      20 = CONTENT
      20 {            
        table = tt_content
        select {
          pidInList.field = tpid              
          where = colPos = 16
          andWhere = uid IN ({register:newsUids})
          andWhere.insertData = 1              
          orderBy = FIELD(uid,{register:newsUids})
          orderBy.insertData = 1
        }
        renderObj = COA
        renderObj {              
          10 >
          10 < tt_content  
          10.if.equals.field = colPos
          10.if.value = 16            
          10.images {
            20 {
              cols >
              cols = 1
              1 {
                imageLinkWrap.linkParams.ATagParams.dataWrap = data-lightbox="{field:uid}" data-title="{field:titletext}"                   
                file {
                  maxH >
                  maxW >
                  maxH = 220c
                  maxW = 380c
                  minH < .maxH
                  minW < .maxW
                  width >
                  width = 380c
                  height >
                  height = 220c
                }
              }
              equalH >
              equalW >
            }
          }
          10.textpic.20.1 < .20.images.20.1                            
        }            
        stdWrap.wrap = <div class="details-boundary foldable">|</div>            
      }          
      wrap = <div class="news-boundary">|</div>          
    }
  }            
} ## 45 end

Kurz zum Hintergrund: Es soll hier ein Language-Fallback stattfinden, der alle Elemente der aktuellen Sprache holt oder aber, falls keine oder nicht genügend Elemente in der Sprache vorhanden sind, diese aus einer Reihenfolge anderer Sprachen holt, bis die mindestanzahl an Elementen erreicht ist. Das macht das PHP-Skript. Soweit sogut, alle uids und pids passen.

Im ersten Content-Element ( 45.10 ) werden die Pids in Reihenfolge des auftretens der gelisteten Uids abgeholt.
Das renderObj enthält verschachtelt zwei weitere CONTENT-Elemente ( 45.10.renderObj.10 und 45.10.renderObj.20), einmal für Spalte 15 ( Teaser ) und Spalte 16 ( Volltext ).
Soweit so gut, das debugging ergibt, dass die SQL-Abfragen passen und entsprechende ( korrekte ) Ergebnisse liefern.
ABER:
Die Ausgabe der Elemente bringt mir zuerst 45.10.renderObj.20 und anschließend 45.10.renderObj.10, d.h.
mein Volltext wird vor seinem Teaser-Text angezeigt.
Wenn ich dass oberste renderObj ( 45.10.renderObj ) von COA auf COA_INT stelle, dann passt die Reihenfolge, allerdings werden die Datensätze dann doppel und dreifach dargestellt ( vermutlich nach Anzahl der Inhaltselemente ergo tt_content-Datensätze der jeweiligen Seite ).

Kann mir hier evtl. einer einen Tipp geben woran das liegt bzw. wie ich das beheben kann, damit die Elemente im renderObj in der korrekten Reihenfolge ausgegeben werden?

P.S.: Typo3 6.2.7