Vanilla 1.1.2 Forum von Lussumo. Weitere Informationen: Dokumentation, Community.

    •  
      CommentAuthortitanium
    • CommentTime28.07.2010
     permalink
    Hi,

    ich setzte Revo 2.0.0 ein und möchte folgendes machen: Eine Seite soll sich ihre Inhalte aus ihren Unterseiten zusammenbauen. Angenommen, ich habe folgenden Seitenbaum:

    Hauptseite
    |_ A
    |_ B
    |_ C

    Die Hauptseite zieht sich per getResources die Inhalte aus den einzelnen Unterseiten A, B und C (ich nenne diese mal "Zeilen") mittels [[getResources? &parents=`[[*id]]` &tpl=`irgendeinchunk`]

    Allerdings haben nun alle Zeileneinträge A bis C die Struktur und das Design von "irgendeinchunk", unabhängig von ihrem jeweiligen Template.

    Jetzt kommt die Herausforderung: ich möchte, dass die einzelnen Zeilen A, B und C jeweils eine andere Ausgabe erhalten, entsprechend ihrem jeweiligen Template. Auf diese Weise könnte ich aus einzelnen, einfach strukturierten Unterseiten komplexe Seitenlayouts aufbauen, deren Inhalte sich per Drag & Drop im Seitenbaum sortieren lassen. Das käme dann in etwa den "Content Elements" in Typo 3 nahe.

    Hat jemand dazu eine Idee?
    • CommentAuthorBruno
    • CommentTime28.07.2010 bearbeitet
     permalink
    In Revo müßte das funktionieren:

    Erstelle ein dropdown-TV name z.B. 'chunkname'

    als optionswerte Deine chunknamen und einen chunknamen als defaultwert.
    also so in der Art:

    chunknameA||chunknameB||chunknameC

    in Deinen chunk für getResources, nenne ihn z.B. flexchunk, schreibst Du

    [[$[[+chunkname]]]]

    Dein Aufruf dann
    [[getResources? &parents=`[[*id]]` &tpl=`flexchunk`]]

    Für die Resourcen dann mit der dropdown-TV 'chunkname' das gewünschte layout-chunk auswählen
    •  
      CommentAuthortitanium
    • CommentTime28.07.2010 bearbeitet
     permalink
    Hallo Bruno,

    hab' erstmal vielen Dank für deine Hilfe! Ich habe versucht, deine Lösung nachzuvollziehen, und bin zunächst auf Probleme gestoßen. Dann habe ich mir das getResources-Snippet genauer angesehen und folgende Änderungen an deiner Vorgehensweise gemacht:

    a) Dem Aufruf von getResources muss anscheinend ein weiterer Parameter "includeTVs" hinzugefügt werden sonst werden die TVs der Kindseiten nicht ausgewertet:

    [[getResources? &parents=`[[*id]]` &tpl=`flexchunk` &includeTVs=`1`]]

    b) Um die TV anzusprechen, muss man anscheinend ein "tv." davorstellen, deshalb: [[$[[+tv.chunkname]]]]

    (Das war alles neu für mich. Ist das nur bei meiner Installation so?)

    Dann hat dein Lösungsweg funktioniert und ich erhalte die Ausgabe der unterschiedlichen Chunks auf der Elternseite. Soweit schon mal super. Problematisch ist jetzt noch: In jedem Chunk sollen andere TVs benutzt werden (also z.B. in chunknameA zwei Bilder nebeneinander, in chunknameB ein Richtext links und ein Bild rechts usw.). Ich müsste ja jetzt ein Template anlegen, in dem alle möglichen TVs enthalten sind, die dann von den Chunks benutzt werden. Oder ich muss Templates erstellen, die den gleichen Namen wie die Chunks haben und dann jeweils paarweise von den pflegenden Redakteure ausgewählt werden. Das ist entweder unübersichtlich oder umständlich.

    Gibt es keinen Weg, mit verschiedenen Templates anstelle von unterschiedlichen Chunks zu arbeiten? (z.B. Template A hat ein Bild und ein Text, Template B zwei Richtext-TVs, Template C zwei Bilder usw.) Oder, wenn schon Chunks: zusammen mit der Auswahl eines Templates sollte automatisch auch gleich der jeweilige Ausgabechunk verknüpft werden, so dass der Redakteur nur das Template wählt und damit dann auch gleich die Ausgabe in der Elternseite steuert - das wäre der Idealfall.
    • CommentAuthorBruno
    • CommentTime29.07.2010
     permalink
    b) Um die TV anzusprechen, muss man anscheinend ein "tv." davorstellen, deshalb:


    Du kannst auch den parameter &tvPrefix=`` einsetzen, dann brauchst Du das nicht.

    Oder, wenn schon Chunks: zusammen mit der Auswahl eines Templates sollte automatisch auch gleich der jeweilige Ausgabechunk verknüpft werden, so dass der Redakteur nur das Template wählt und damit dann auch gleich die Ausgabe in der Elternseite steuert - das wäre der Idealfall.


    Du kannst es so versuchen: Benenne Deine chunks nach der template_ID also so:

    chunk_1
    chunk_2
    chunk_3

    dann im flexchunk:

    [[$chunk_[[+template]]]]
    •  
      CommentAuthortitanium
    • CommentTime30.07.2010
     permalink

    Du kannst auch den parameter &tvPrefix=`` einsetzen, dann brauchst Du das nicht.

    Oh ja, das steht sogar in der Doku unter http://svn.modxcms.com/docs/display/ADDON/getResources - ich habe es übersehen oder dem Eintrag keine Bedeutung beigemessen. :plain: Mit Ditto kannte ich mich gut aus, nun heißt es, Routine im Umgang mit getResources zu bekommen. Revo ist eine feine Sache. Alles geht, man muss nur kapieren, einiges anders zu machen. Da gibt es noch viel für mich zu lernen.

    [[$chunk_[[+template]]]]

    Genial einfach, einfach genial! :-)
    Das ist genau das, was ich gesucht habe. Ich hatte auch schon ein wenig rumüberlegt und wollte schon über das Framework per Snippet eine Lösung basteln. Aber dein Einzeiler ist sehr elegant. Besser kann man das wohl nicht machen, zumal so auch direkt die Zuordnung zwischen Chunk und Template visuell über den Namen gegeben ist.

    Danke dir vielmals für diese optimale Lösung!