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