Hi zusammen,
ich hoffe, ihr könnt mir ein wenig mit TypoScript behilflich sein.
Ich habe mir mit TypoScript ein CONTENT-Objekt gebastelt, was Global Partner und Sponsoren in der linken Spalte anzeigen soll. Diese werden aus einer Seite gelesen, in denen die Partner und Sponsoren aufgelistet werden.
Hier erst einmal das TypoScript:
lib.partnerSponsors = CONTENT
lib.partnerSponsors {
table = tt_content
wrap = <h2>{$partnerSponsorsTitle}</h2><div id="partnerSponsorSlider">|</div>
select {
selectFields = image, image_link, altText, titleText
where = (colPos = 0 OR colPos = 2)
pidInList = {$partnerSponsorsPageIDs}
orderBy = sorting
languageField = sys_language_uid
}
renderObj = COA
renderObj {
5 = IMAGE
5 {
wrap = <div>|</div>
file.import.listNum = 0
file.import = uploads/pics/
file.import.field = image
file.maxW = 190
file.maxH = 100
altText.field = altText
titleText.field = titleText
imageLinkWrap = 1
imageLinkWrap {
enable.ifEmpty.typolink.parameter.field = image_link
enable.ifEmpty.typolink.parameter.listNum = 0
typolink.parameter.field = image_link
typolink.parameter.listNum = 0
typolink.extTarget = {$styles.content.links.extTarget}
}
}
}
}
Hierbei ergibt sich bei mir eine kleine Schwierigkeit bei der Sortierung der Inhalte:
Wie in dem Script angegeben, soll nach dem Feld "sorting" sortiert werden, was zwar an sich auch funktioniert, aber ich ein Problem mit der Sortierung bekomme, wenn ich aus mehreren Seiten oder aus mehreren Spalten auslese.
So wird erst die Spalte mit "colPos=2" ausgelesen und dann erst die mit "colPos=0". Wenn ich aus zwei Seiten die Inhalte auslese, werden die Inhalte durcheinander geschmissen.
Ich würde gerne Einfluss darauf haben, aus welcher Spalte und von welcher Seite der Inhalt zuerst dargestellt werden soll.
Hat jemand eine Idee, wie ich das am besten umsetzen könnte?
Vielen Dank schon einmal im Voraus!
Viele Grüße,
Alexander Pankow
Hallo Alex,
da bleiben dir vermutlich nur 2 Möglichkeiten:
1. Aus der DB-Abfrage zwei machen und dann selbst irgendwie zusammenbauen
2. du kannst auch mehrere Sortierkriterien angeben:
select {
selectFields = image, image_link, altText, titleText
where = (colPos = 0 OR colPos = 2)
pidInList = {$partnerSponsorsPageIDs}
orderBy = sorting ASC, colPos ASC
languageField = sys_language_uid
}
würde die Einträge nach Sorting sortieren und bei Gleichwertigen zuerst Inhalte aus Spalte 0, dann aus Spalte 2 nehmen
Wenn du das umdrehts würde zuerst Inhalte aus Spalte 0 nach Sorting sortiert ausgegeben, anschließend die aus Spalte 2
Mit ASC bzw. DESC kannst du angeben ob aufsteigend bzw. absteigend sortiert werden soll ( Standard ist aufsteigend, deshalb muss dies nicht zwingend mit angegeben werden )
Vielleicht hilft dir das ja weiter
Hi,
vielen Dank für die Antwort - das geht ja schon einmal in die richtige Richtung. Funktioniert das auch mit der Page UID, sodass ich praktisch drei Sortierkriterien angebe?
Auch wenn die PageID in der Hinsicht kaum ein zuverlässiges Sortierkriterium ist, sollte es zumindest bei zwei Seiten funktionieren (eine dritte Seite brauche ich bisher nicht).
EDIT: Vergess' das mit der Page UID - ich habe die Sortierung in deinem Beispiel mal umgedreht, sodass es jetzt so aussieht:
select {
selectFields = image, image_link, altText, titleText
where = (colPos = 0 OR colPos = 2)
pidInList = {$partnerSponsorsPageIDs}
orderBy = colPos ASC, sorting ASC
languageField = sys_language_uid
}
Das bringt genau das, was ich brauche: Die Sponsoren werden zuerst angezeigt und dann die Partner und die Spalte mit "colPos=0" wird zuerst genommen: PERFEKT!
Vielen Dank!
Grüße,
Alex
Ich habe nun eine dritte PageID angegeben, nun stellt sich das Problem dar, dass die Sortierung jetzt wieder vorhauen wird.
Ziel ist, dass ich beeinflussen kann, welche Seite zuerst dargestellt wird (Also die Reihenfolge der PageIDs bestimmen), derzeit werden alle durcheinander geschmissen.
Du meintest, ich könnte es ggf. mit zwei Abfragen machen. Wie aber genau?
Wenn da jemand eine Idee hat, wäre ich wirklich dankbar darüber!
Vielen Dank schon einmal im Voraus!
Grüße,
Alex
Vielleicht hast du noch ein paar Zusatzinfos:
Wieso hast du auf colPos 0 und 1 verteilt, wenn du dann wieder verquirlst?
Eine Spalte Sponsoren und eine Partner, oder?
Nach welchem Prinzip möchtest du sortieren?
Denkbar wäre z.b. Zuerst die betroffenen Seiten ( {$partnerSponsorsPageIDs} ) nach sorting
und anschließen innerhalb der einzelnen Seiten nach sorting.
Womit wir wieder bei der Frage nach der colPos-Aufteilung wären.
Chrissli schrieb
Wieso hast du auf colPos 0 und 1 verteilt, wenn du dann wieder verquirlst?
Eine Spalte Sponsoren und eine Partner, oder?
Du meinst sicherlich 0 und 2. ^^
Nein, ganz so einfach ist das nicht. Lass mich erklären:
Es gibt insgesamt 2 - 3 Seiten für die Partner und die Sponsoren:
Es gibt eine Seite für die Partner des Vereins und eine Seite für Partner der Veranstaltung (letztere optional). Am besten guckst du dir das einfach mal live an: http://convention.cosday.de/partner-und-sponsoren.html
Die Sponsoren oben kommen aus dieser Seite. Die Partner des Vereins aus einer Seite aus einem anderen Seitenbaum und die der Veranstaltung in einer nicht sichtbaren Seite. So habe ich die Möglichkeit, die Partner und Sponsoren nur an einer Stelle pflegen zu müssen und sie überall aktualisiert werden.
Chrissli schriebNach welchem Prinzip möchtest du sortieren?
Denkbar wäre z.b. Zuerst die betroffenen Seiten ( {$partnerSponsorsPageIDs} ) nach sorting
und anschließen innerhalb der einzelnen Seiten nach sorting.
Womit wir wieder bei der Frage nach der colPos-Aufteilung wären.
Im Prinzip ganz einfach (in genannter Reihenfolge):
1. Die Seite nach definierter Reihenfolge (zuerst die Sponsoren, dann die Partner der Veranstaltung, anschließend die des Vereins)
2. Nach colPos (0 zuerst, anschließend 2. also ASC)
3. Nach sorting aufsteigend
Punkt 2 und 3 sind soweit kein Problem nur kann ich die Sortierung der Seite nicht definieren.
Leuchtet das jetzt eher ein? Wenn nicht, frag nochmal nach.
Vielen Dank für deine Hilfe!!!
Grüße,
Alex
Hallo Alex,
LiaraAlis schrieb
Du meintest, ich könnte es ggf. mit zwei Abfragen machen. Wie aber genau?
Wenn da jemand eine Idee hat, wäre ich wirklich dankbar darüber!
ich würde es so machen:
lib.partnerSponsors = COA
lib.partnerSponsors {
10 = CONTENT
10 {
table = tt_content
select {
selectFields = image, image_link, altText, titleText
where = (colPos = 0 OR colPos = 2)
pidInList = {$sponsorsPageID}
orderBy = colPos ASC, sorting ASC
languageField = sys_language_uid
}
renderObj = COA
renderObj {
5 = IMAGE
5 {
wrap = <div>|</div>
file.import.listNum = 0
file.import = uploads/pics/
file.import.field = image
file.maxW = 190
file.maxH = 100
altText.field = altText
titleText.field = titleText
imageLinkWrap = 1
imageLinkWrap {
enable.ifEmpty.typolink.parameter.field = image_link
enable.ifEmpty.typolink.parameter.listNum = 0
typolink.parameter.field = image_link
typolink.parameter.listNum = 0
typolink.extTarget = {$styles.content.links.extTarget}
}
}
}
wrap = <h2>{$sponsorsTitle}</h2><div id="sponsorsSlider">|</div>
}
20 < .10
20 {
select {
pidInList = {$partnerPageID}
}
wrap = <h2>{$partnerTitle}</h2><div id="partnerSlider">|</div>
}
30 < .10
30 {
select {
pidInList = {$vereinsPageID}
}
wrap = <h2>{$vereinsTitle}</h2><div id="vereinsSlider">|</div>
}
}
VG,
LuP
NATÜRLICH! Warum bin ich nicht selbst darauf gekommen? Es ist so einfach, aber auf das einfachste kommt man natürlich nicht. xD
Danke für den Denkanstoß!
Ich habe es ein wenig modifiziert und an meine Bedürfnisse angepasst (z.B. brauche ich nur einen Wrap um alles).
Und wenn ich eine Abfrage nicht brauche, setze ich die Konstante einfach nicht (oder gibt es da noch eine hübschere Lösung?).
Grüße,
Alex