Contao-Camp 2024
Ergebnis 1 bis 13 von 13

Thema: Template-Variable an anderen Layout-Bereich übergeben

  1. #1
    Contao-Nutzer Avatar von JamesdK
    Registriert seit
    02.12.2009.
    Ort
    Leverkusen
    Beiträge
    162
    Partner-ID
    8753

    Standard Template-Variable an anderen Layout-Bereich übergeben

    Hallo zusammen,

    ich habe in der Hauptspalte ein Modul-Template mit einer Deklaration für eine globale Variable:
    PHP-Code:
    $GLOBALS['MEINE_VARIABLE']['VAR1'] = $this->irgendwas
    Wenn ich jetzt in einem weiteren Modul-Template auf der gleichen Seite die global deklarierte Variabel ausgeben möchte via
    PHP-Code:
     echo $GLOBALS['MEINE_VARIABLE']['VAR1']; 
    dann funktioniert das in der Hauptspalte, aber nicht in der rechten Spalte des Layouts.

    Woran liegt das? Und ist der Weg über die Globals der richtige? Gibt es andere Methoden?

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Zitat Zitat von JamesdK Beitrag anzeigen
    Woran liegt das?
    Die rechte Spalte wird vermutlvor der Hauptspalte gerendert.



    Zitat Zitat von JamesdK Beitrag anzeigen
    Und ist der Weg über die Globals der richtige?
    Nein, das solltest du immer meiden.



    Zitat Zitat von JamesdK Beitrag anzeigen
    Gibt es andere Methoden?
    Beschreibe deinen Use-Case mal genauer.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer Avatar von JamesdK
    Registriert seit
    02.12.2009.
    Ort
    Leverkusen
    Beiträge
    162
    Partner-ID
    8753

    Standard

    Die rechte Spalte wird vermutlvor der Hauptspalte gerendert.
    Die REnderreihenfolge scheint dann aber anderes als die Platzierung im Quellcode zu sein. Denn da kommt die rechte Spalte nach der Hauptspalte.


    Beschreibe deinen Use-Case mal genauer.
    Ich habe ein Archiv mit Elementen (individuell programmiert), ähnliche Mechanik wie bei News oder Events. Es gibt eine Leserseite, die ich gerne zweispaltig aufbauen würde.
    In der Hauptspalte das Lesermodul, in der Sidebar das Listenmodul mit Markierung des aktiven Elements (CSS-Klasse reicht).
    Im Lesermodul habe ich bisher die Globale Variable gesetzt, im Listenmodul lese ich sie aus.
    Packe ich beide Module in die gleiche Spalte, funktioniert das, sind die Module in unterschiedlichen Spalten, geht es nicht.

  4. #4
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Was hier mit Use Case vermutlich gemeint ist, wäre das "Wozu". Warum setzt du diese globale Variabel und ließt sie dann wieder aus?

  5. #5
    Contao-Nutzer Avatar von JamesdK
    Registriert seit
    02.12.2009.
    Ort
    Leverkusen
    Beiträge
    162
    Partner-ID
    8753

    Standard

    Ich möchte in der Liste markieren, in welchem Schritt der Besucher sich befindet. Stellt euch die Liste als Fortschrittsanzeige vor und die einzelnen Elemente sind die Schritte des Gesamtprozesses.

  6. #6
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hmm. Okay. Klingt eigenartig.

    Also wenn ich man mal die Erweiterung mp_forms betrachtet, wird da der Fortschritt in der Session abgelegt.

  7. #7
    Contao-Nutzer Avatar von JamesdK
    Registriert seit
    02.12.2009.
    Ort
    Leverkusen
    Beiträge
    162
    Partner-ID
    8753

    Standard

    Es handelt sich aber nicht um ein Formular. Es ist ein Archiv mit Elementen.
    Stell es dir wirklich wie ein Newsarchiv vor, bei dem im Listenmodul markiert werden soll, in welchem Newsartikel man sich gerade befindet.

  8. #8
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Aha, also in der Liste der Archive (rechts in der Sidebar) soll das Archiv des Beitrags, der Hauptbereich zu sehen ist, hervorgehoben werden. Korrekt?

    Wenn dem so ist, dann geht man vermutlich über die URL, holt sich anhand der ID / des Alias den Beitrag und ermittelt dann das Archiv.
    Geändert von cliffparnitzky (25.02.2022 um 10:30 Uhr)

  9. #9
    Contao-Nutzer Avatar von JamesdK
    Registriert seit
    02.12.2009.
    Ort
    Leverkusen
    Beiträge
    162
    Partner-ID
    8753

    Standard

    Genauso. Und wie gesagt, meine Methode über globale Variablen funktioniert so leider nicht. Und das scheint ja auch nicht der eleganteste Weg bzw nicht zu empfehlende Weg zu sein.

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Wie cliffparnitzky schon erwähnt hat solltest du über die URL ermitteln, auf welcher News du dich gerade befindest. Also auf einer News Detailseite bekommst du über
    PHP-Code:
    \Contao\Input::get('auto_item'
    den Alias der aktuellen News.
    » sponsor me via GitHub or PayPal or Revolut

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

    Standard

    Die andere, saubere, Variante wäre ein (stateful) Service, der einen parseArticles Hook implementiert.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Contao-Nutzer Avatar von JamesdK
    Registriert seit
    02.12.2009.
    Ort
    Leverkusen
    Beiträge
    162
    Partner-ID
    8753

    Standard

    Okay, dann schon mal vielen Dank für die Ansätze – ich probiere es aus.

  13. #13
    Contao-Nutzer Avatar von JamesdK
    Registriert seit
    02.12.2009.
    Ort
    Leverkusen
    Beiträge
    162
    Partner-ID
    8753

    Standard

    Kurze Rückmeldung:
    Über den Abgleich des Alias mit dem Wert aus
    PHP-Code:
    \Contao\Input::get('auto_item'
    kann ich die CSS-Klasse erfolgreich setzen.
    Das reicht mir erstmal. Danke für eure Hilfe!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •