Zum Inhalt springen

Content im Frontend sortieren per Link

Erstellt am 12. September 2008 · 28 Antworten · letzte Antwort am 19. September 2008 · Seite 1 von 2

Tags: Frage

n00k ·

Hallo Leute,

ich habe mal wieder "funky shit" vor. Und zwar gibt es auf unserer Webseite eine Seite auf der sich viele Textelemente befinden, die übers Backend gepflegt werden. Diese Contentelemente sind über die Rahmen (section_frame) in drei Kategorien eingeteilt. Der Webseitenbesucher soll nun die Möglichkeit haben, die Contentelemente nach einer der drei Kategorien sortieren zu können.
Ich habe mir überlegt, das es vielleicht per typolink möglich ist die orderBy-Funktion auf den Link zu legen und dort dann nach section_frame zu sortieren.
Hört sich ziemlich kniffelig an, aber ich bin mir sicher, dass das irgendwie möglich ist. Es kann auch durch eine Extension geschehen. Allerdings müssen die Contentelemente normale Contentelemente bleiben.

Vielleicht fällt euch was zu dem Thema ein, wäre super.

LG Felix

just2b ·

Sollte kein Problem sein: Links eben via typolink, im TS prüfst du ob die conditions gesetzt sind und drehst das orderby um. brauchst du keine condition dafür

lg georg

n00k ·

Hi Georg,
kannst du mir nen Beispiel geben? Ich hab noch nicht rausgefunden wie ich das verkuppel.
EDIT: Also ich weiß nicht wie ich dem Typolink die Parameter zum Sortieren übergebe.

just2b ·

Hallo,

schau dir mal im TsOB einfach an was styles.content.get in wahrheit ist, dann müsste das problemlos gehen. ich muss leider weg, sonst am montag

georg

n00k ·

Hallo Georg,

kannst du mir da noch mal helfen? Ich weiß gerade nicht so richtig, wo ich im TSOB das styles.content.get finde.

LG Felix

SLAng ·

Ist vielleicht ne Geschmacksfrage wo man danach sucht... Ich schau mir den Code eigentlich immer im Template Analyzer an. Im TSOBB sieht man eigentlich doch eher wie man es selbst gesezt hat. Da wird das dann aber auch bei dir im PAGE- Object / 10 zu finden sein.

Ansonsten siehtst du im Template analyzer in EXT:css_styled_content/static/ im Setup-Bereich was styles.content.get ist:

styles.content.get = CONTENT
styles.content.get {
	table = tt_content
	select.orderBy = sorting
	select.where = colPos=0
	select.languageField = sys_language_uid
}
n00k ·

Danke SLAng,
das bringt mich schon mal ein bisschen weiter.
kann ich mir irgendwo nachschauen, wie ich mir nen typolink bastel mit eigenen parameter?
Ich muss ja nen Link generieren, der beim klicken die Inhalte sortiert und zwar nach einem Wert den ich bestimmen kann.

n00k ·

Hi,
das hab ich mir schon durchgelesen. Mir fehlt das Verbindungsstück zwischen Typolink und Sortierung.
Hier mein bisheriges Gewurschtel, bei dem sich einige wahrscheinlich die Haare raufen werden. Aber bisher komm ich nur mit "Versuch & Irrtum" durch Typoscript.

page.10.marks.TEST = TEXT
page.10.marks.TEST {
	value = test
	typolink {
		parameter.data = TSFE : id
		additionalParams.cObject = COA
                additionalParams.cObject {
			1 = TEXT
			#1.data = 
			1.table = tt_content
			1.select {
				orderBy = sorting
				where = colPos=0
				languageField = sys_language_uid
			}
		}
	}
}

Vielleicht könnt ihr mir da nen kleinen Schupps in die richtige Richtung geben.

n00k ·

Ich habe jetzt noch mal etwas geforscht und gesammelt. 😃
Aber durch rumprobieren komme ich nicht weiter. Die Profis sehen wahrscheinlich sofort das mein TS ne Katastrophe ist, aber ich wäre sehr froh man gibt mir nen paar Tipps wie ich das korrekt verknüpfe/verschachtel. Ich finde leider kein ähnliches Beispiel, ich will jetzt auch nicht einfach aufgeben nur weil ich das nicht hinbekomme. Also schon mal Danke für eure Kommentare.

page.10.marks.TEST = TEXT
page.10.marks.TEST {
	value = test
	typolink {
		addQueryString = 1
		addQueryString.method = GET
		parameter.field = section_frame
		parameter.data = TSFE : id
		#additionalParams.stdWrap {
		#	if
		#}
		#ATagParams.stdWrap.cObject = TEXT
    		#ATagParams.stdWrap.cObject {
		#	value = class="sortieren"
		#}
		additionalParams.cObject = COA
		additionalParams.cObject {
			#1 = TEXT
			#1.data = 
			1.table = tt_content
			1.select {
				orderBy = title
				#selectFields = section_frame
				#where = colPos = 0 AND section_frame != 1
				#languageField = sys_language_uid
			}
		}
	}
}
ChevChelios ·

Hi Felix,

also ich persönlich würde das schon über conditions lösen, weil man da schön flexibel Werte eben konditional bestimmen kann. Hier mal ein einfaches aber funktionierendes Beispiel wie du den Inhalt einer Spalte aufsteigend oder absteigend sortieren kannst und dabei dynamisch die Link parameter anpasst. Das ganze lässt sich dann beliebig erweitern / verändern mit zwei, drei oder mehr Links, wie man es eben gerade braucht.

In die Constants trägst du das hier ein:

reihenfolge = ASC
umgekehrt = DESC
sortLinktext = absteigend sortieren

[globalVar = GP:sort = DESC]
reihenfolge = DESC
umgekehrt = ASC
sortLinktext = aufsteigend sortieren
[end]

Dann ins Setup deinen Link und die Konstante ins select.orderBy:

# zunächst definiere ich hier meinen Sortierlink mit variablem sortLinktext,
# dem Parameter sort und der aktuellen Seitenid über TSFE : id
page {
	5 = TEXT
	5 {
		value = {$sortLinktext}
		typolink {
		parameter.data = TSFE : id
		additionalParams =&sort={$umgekehrt}			
		}
	}#text



	10 = CONTENT
	10{
		table = tt_content
		select {
			where = colPos=2
			orderBy = sorting {$reihenfolge}
			languageField = sys_language_uid
		}#select
	}#content
}#page

So kann man theoretisch mit allen möglichen anderen Parametern sortieren. Du könntest z.B. das "sorting" selber in eine zweite Konstante aufnehmen und dann eben mehrere Links definieren wo Du dann meinetwegen nach "title", "crdate" oder auch wie in deinem Fall nach "section_frame" etc. sortieren kannst. Dir fällt dazu sicher was ein 🙂

Gruß Alex

n00k ·

Hallo,

kann mir vielleicht noch mal kurz jemand helfen. Ich versuche den section_frame in das Beispiel von Alex einzubringen, hat aber bisher nicht wirklich funktioniert. Ich weiß nciht wie ich den section_frame richtig anspreche und sortiere.
Muss ich da nach dem Key (Zahl) oder dem Namen sortieren?
Wäre super dankbar für die Hilfe.

LG Felix

ChevChelios ·

Hey Felix,

was klappt denn nicht, oder besser gesagt was hast du denn bisher gemacht?! Poste mal deinen Code, dann können wir hier besser nachvollziehen, wo es denn gerade hakt.

Gruß Alex

n00k ·

Also der aktuelle Code funktioniert nicht und ich habe schon verschiedenes mit den Konstanten probiert, aber mir fehlt da einfach die Erfahrung. Hier der Code:

Setup:

page.10.marks.TEST = COA
page.10.marks.TEST {
        5 = TEXT
        5 {
                value = geloest
                typolink {
                parameter.data = TSFE : id
                additionalParams = &sort={$geloest}
                }
        }
}
page.10.marks.CONTENT = CONTENT
page.10.marks.CONTENT {
                table = tt_content
                select {
                        where = colPos=0
                        orderBy = serction_frame=100
                        languageField = sys_language_uid
                }
        }
}

Constants:

ungeloest = 100
geloest = 101
info = 102
just2b ·

orderBy = serction_frame=100

das ist ja schon mal falsch.. wenn heißts section_frame und das =100 danach gehört weg bzw ersetzt mit asc oder desc

georg

n00k ·

Ja so hatte ich es auch mal, aber da hing es wahrscheinlich an was anderem, dass es nicht funzte. 😃

EDIT: Noch mal zu meinem Ziel. Ich möchte am Ende mehrere Links haben (ungelöst, gelöst, info) nach denen die Inhalte sortiert werden.

EDIT2: Funktioniert das überhaupt wenn ich nur über ASC und DESC sortieren kann, aber 3 Links habe? Müssen die dann über Konstanten alle nach ASC sortiert werden, oder wie kann ich mir das vorstellen?

ChevChelios ·

Ach ja und wenn du nach ganz bestimmten Kriterien sortieren willst, oder besser gesagt nur eine Teilmenge n aus m anzeigen willst dann kannste das, was Du bei sorting eingetragen hast bei "where" reinschreiben. Also konkret:

select.where = colPos=0 AND section_frame=100

bzw. variabel dann

select.where = colPos=0 AND section_frame={$deineFrameKonstante}

Damit sollteste dann jetzt eigentlich klarkommen. Denn nun weisst Du, wie Du eine Teilmenge einschränkst, die Du dann anschließend noch sortieren kannst.

Gruß Alex