Content im Frontend sortieren per Link [Gelöst]

  • n00k n00k
    Sternenflotten-Admiral
    0 x
    179 Beiträge
    0 Hilfreiche Beiträge
    12. 09. 2008, 13:53

    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


  • n00k n00k
    Sternenflotten-Admiral
    0 x
    179 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2008, 11:52

    Hast ja recht. :)
    Danke für eure Geduld, mit dem Wissen werde ich mich mal an die Arbeit machen. Ich hoffe ich krieg das jetzt hin.

  • n00k n00k
    Sternenflotten-Admiral
    0 x
    179 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2008, 12:24

    Ich komme der Sache langsam näher, zumindest was die Funktionsweise meiner Links betrifft. Es funktioniert sogar schon EIN BISSCHEN. :D

    Constants:[TS]rahmen =

    [globalVar = GP:section_frame<100,GP:section_frame>100]
    rahmen = AND section_frame=100

    [globalVar = GP:section_frame<101,GP:section_frame>101]
    rahmen = AND section_frame=101

    [globalVar = GP:section_frame<102,GP:section_frame>102]
    rahmen = AND section_frame=102

    [end][/TS]

    Setup:[TS]page.10.marks.TEST = COA
    page.10.marks.TEST {
    5 = TEXT
    5 {
    value = ungelöst
    typolink {
    parameter.data = TSFE : id
    additionalParams =&section_frame=100
    }
    }
    6 = TEXT
    6 {
    value = gelöst
    typolink {
    parameter.data = TSFE : id
    additionalParams =&section_frame=101
    }
    }
    7 = TEXT
    7 {
    value = info
    typolink {
    parameter.data = TSFE : id
    additionalParams =&section_frame=102
    }
    }
    }
    page.10.marks.CONTENT = CONTENT
    page.10.marks.CONTENT {
    table = tt_content
    select {
    where = colPos=0 {$rahmen}
    orderBy = sorting
    languageField = sys_language_uid
    }
    }[/TS]
    [b]EDIT:[/b] Die Seite steht wenn sie aufgerufen wird auf info(102), die Links "ungelöst" und "gelöst" funktionieren nicht. Link "info" schaltet die Seite auf gelöst(101). Verwirrend. :(
    [b]EDIT2:[/b] Scheinbar funktioniert nur die Letzte Condition bei den Konstanten. Hab ich da nen Fehler drin, dass die anderen nicht funktionieren?

    Wenn jemandem das Problem schon auffällt, kann er sich ja melden. Werde mal weiter basteln. :)

  • 0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2008, 13:34

    Schau Dir mal deine Conditions an und denk mal genau drüber nach, was Du da geschrieben hast. Im ersten Fall schreibst Du "wenn kleiner oder größer als 100" das schließt die 100 aus und lässt nur noch 101 oder 102 im Beispiel zu.

    Im Falle von 101 bekommste dann aber schon dein erstes logische Problem, denn Typoscript wird zeilenweise geparst und 101 trifft in der ersten Condition zu, da 101 größer ist als 100, aber dann gehts ja weiter im Text und bei der 102er Condition haste dann wieder einen Treffer, der dir den Wert 100 wieder auf 102 überschreibt, denn 101 ist auch kleiner als 102.

    Du arbeitest mit drei Werten von denen sich immer jeweils zwei gegeneinander ausschließen müssen. Denn im Klartext steht in deiner ersten Condition "Hier trifft ALLES zu, was NICHT 100 ist" in der zweiten "ALLES was NICHT 101" und das gleiche für Condition 3. So kann das ja auch nicht funktionieren...

    Wenn Du das Problem was ich gerade oben dargstellt habe verstanden hast, dann sollte Dir auch direkt der Fehler auffallen und die Lösung ist wirklich simpel. :)

    Gruß Alex

  • n00k n00k
    Sternenflotten-Admiral
    0 x
    179 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2008, 14:42

    Ok, ja so kanns ned funktionieren. :)

    Also im Prinzip muss ich über die Condition den Wert des section_frame in das where-Objekt reinschreiben.
    Also müsste es so funktionieren:
    [TS][globalVar= GP:section_frame=100]
    rahmen = AND section_frame=100[/TS]

    Sprich: Link wird gedrückt und hängt section_frame=100 an die URL, Condition sieht section_frame=100 und gibt dem rahmen den wert für das where-Objekt mit. Dieses schließt nun alle Objekte im tt_content aus die nicht section_frame=100 sind.

    Geht das so? Da wird ja zweimal zwischen Constants und Setup hin und her gesprungen, geht das denn? Also praktisch gehts nicht, sonst würde ich es sehen. Aber liegts an meinem Code oder an der Struktur?

  • 0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2008, 14:59

    Jip, genau das war der Fehler :)

    allerdings kann ich nicht nachvollziehen, warum es dann jetzt nicht bei dir läuft. Es wird auch nicht hin und her gesprungen denn beim Request deiner Seite werden zunächst alle Konstanten abgearbeitet bzw. Bedingungen geprüft und gesetzt und dann wird der Setup Code mit den resultierenden Konstanten "befüllt". Von daher steht in deinem Select Statement dann auch tatsächlich der Code drin, den du per Konstante bei "where" hinten anhängst.

    Trage zum Testen doch mal hart das "AND section_frame=100" hinter "colpos" ein und wiederhole das nacheinander auch mit 101 und 102. Wenn du dann immernoch keine Ausgabe bekommst, dann solltest Du mal in der Datenbank nachschauen, ob die Bedingung die Du übergibst auch zutreffen kann, oder Du hast evtl. noch einen Schreibfehler in deinen Konstanten...

    Gruß Alex

  • n00k n00k
    Sternenflotten-Admiral
    0 x
    179 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2008, 15:20

    Also es passiert nichts, es werden alle Kategorien (section_frame) angezeigt und beim Klicken auf die Links passiert eben nichts. :(
    Hart eingetragen funktioniert die Ansicht. Hier mein Code, vielleicht ist doch irgendwo nen Denkfehler. :(

    Constants:[TS]rahmen = #alle

    [globalVar= GP:section_frame=100] #ungelöst
    rahmen = AND section_frame=100

    [globalVar= GP:section_frame=101] #gelöst
    rahmen = AND section_frame=101

    [globalVar= GP:section_frame=102] #info
    rahmen = AND section_frame=102

    [end][/TS]

    Setup:[TS]page.10.marks.TEST = COA
    page.10.marks.TEST {
    5 = TEXT
    5 {
    value = ungelöst
    typolink {
    parameter.data = TSFE : id
    additionalParams = &section_frame=100
    }
    }
    6 = TEXT
    6 {
    value = gelöst
    typolink {
    parameter.data = TSFE : id
    additionalParams = &section_frame=101
    }
    }
    7 = TEXT
    7 {
    value = info
    typolink {
    parameter.data = TSFE : id
    additionalParams = &section_frame=102
    }
    }
    }
    page.10.marks.CONTENT = CONTENT
    page.10.marks.CONTENT {
    table = tt_content
    select {
    where = colPos=0 {$rahmen}
    orderBy = sorting
    languageField = sys_language_uid
    }
    }[/TS]

  • 0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2008, 15:41

    Du kannst keine Kommentare hinter die Zeilen schreiben. Entweder drüber oder drunter...

  • n00k n00k
    Sternenflotten-Admiral
    0 x
    179 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2008, 15:46

    Da macht man einmal was anders. :D

    Danke an alle. Es funktioniert zwar anders als gedacht, aber so ists gut. :)