Ergebnis 1 bis 9 von 9

Thema: Template - Variable an Elternelement übergeben

  1. #1
    Contao-Fan
    Registriert seit
    09.05.2011.
    Ort
    Hamburg
    Beiträge
    296

    Standard Template - Variable an Elternelement übergeben

    Hallo,

    ist es möglich aus einem Template eine Variable an sein Übergeordnetes Template zu übergeben oder einen Block aus dem Übergeordneten Template zu überschreiben?
    Ich meine keine Vererbung von Templates.

    Folgenden Aufbau als Beispiel:
    Ich habe einen Artikel und in diesem ist ein Bild. Der Artikel lädt das Template mod_article.html5 und das Bild lädt das Template ce_image.html5.

    Im Artikel Template gibt es einen Platzhalter/Variable/Block-Definition welche ich aus dem Bild Template heraus überschreiben möchte.

    Ist es möglich im Template ce_image.html5 eine Variable oder einen definierten Block aus dem Template mod_article.html5 zu überschreiben?

    Viele Dank
    Robert

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

    Standard

    Erkläre mal genauer warum du das brauchst.

  3. #3
    Contao-Fan
    Registriert seit
    09.05.2011.
    Ort
    Hamburg
    Beiträge
    296

    Standard

    Ich möchte einen Konfigurationsschritt sparen.
    Als Beispiel: Meine Artikel haben alle eine Container Klasse und somit eine maximale Breite. Wenn in einem Artikel nun ein Bild erstellt wird und dieses zum Beispiel das Template für Hintergrundbilder verwendet, soll die Container Klasse des Artikel nicht mehr verwendet werden und er soll die volle Breite nutzen.

    Der bekannte Weg ist, ich ändere dementsprechend das Template oder die hinterlegten Klassen des Artikels. Hier wollte ich gern eine automatische Lösung, damit ich nicht extra noch den Artikel ändern muss. Natürlich kann ich ihn aber immer noch manuell ändern, indem ich dem Artikel ein anderes Template zuweise welches nicht auf Abhängigkeiten der Kinds-Elemente reagiert.

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

    Standard

    Ich bin mir nicht sicher ob das funktioniert, aber theoretisch könntest du dir im Inhaltselement das Model des Elternelements (also den Artikel) holen und dort dann dynamisch die CSS Klasse hinzufügen, wenn noch nicht vorhanden.

  5. #5
    Contao-Fan
    Registriert seit
    09.05.2011.
    Ort
    Hamburg
    Beiträge
    296

    Standard

    Das klingt gut, aber wie hole ich mir das Model des Elternelements?

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

    Standard

    PHP-Code:
    $objArticle = \ArticleModel::findById($this->pid); 

  7. #7
    Contao-Fan
    Registriert seit
    09.05.2011.
    Ort
    Hamburg
    Beiträge
    296

    Standard

    PHP-Code:
    $objArticle = \ArticleModel::findById($this->pid); 
    Danke dir Spooky!

    Aber leider kann ich so zwar auf die in der DB hinterlegten Attribute des Artikels zugreifen sie aber nicht temporär verändern ohne sie in der DB zwischen zu speichern, oder?

    Ich befürchte, das dies prinzipiell nicht geht. Was an der Vererbungsstruktur liegt.

    Wobei eine fiese Sache funktioniert. Ich kann im Inhaltselement eine globale Variable definieren. Diese steht dann auch im Artikel Element zur Verfügung. Dort muss ich sie nur wieder löschen wenn sie gesetzt wurde, sonst bekommen sie auch alle anderen Artikel. Aber das ist keine gute Lösung

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

    Standard

    Zitat Zitat von blue12 Beitrag anzeigen
    Aber leider kann ich so zwar auf die in der DB hinterlegten Attribute des Artikels zugreifen sie aber nicht temporär verändern ohne sie in der DB zwischen zu speichern, oder?
    Prinzipiell schon. Gespeichert wird es in der Datenbank nur, wenn du ->save() aufrufst.


    Zitat Zitat von blue12 Beitrag anzeigen
    Ich befürchte, das dies prinzipiell nicht geht. Was an der Vererbungsstruktur liegt.
    Ja, geht tatsächlich nicht.


    Was du aber machen könntest: mit einem getArticle Hook die CSS Klasse dynamisch hinzufügen, je nach Inhaltselement des Artikels.

  9. #9
    Contao-Fan
    Registriert seit
    09.05.2011.
    Ort
    Hamburg
    Beiträge
    296

    Standard

    Das ist auch ein guter Ansatz!

    Hätte es nur gern in den Templates gelöst. Die Block-Ersetzung geht so einfach. Nur für diesen Fall (Rückwärts) geht es leider nicht. Vielleicht ist es auch ganz gut das dies nicht funktioniert.
    Auf jeden Fall, Danke dir Spooky für den Support! Ich werde mir nun aus deinen Empfehlungen eine Lösung bauen.

    Vielen Dank
    Robert

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
  •