Ergebnis 1 bis 6 von 6

Thema: Inhaltselemente aus einem Template ansprechen

  1. #1
    Contao-Nutzer Avatar von epdesign
    Registriert seit
    21.04.2011.
    Ort
    Mödling - Österreich
    Beiträge
    13

    Frage Inhaltselemente aus einem Template ansprechen

    Hallo,

    ich möchte geren einzelnen Inhaltselemente (wo ich die ID-Nummer kenne) aus einen PHP-Script gezielt ansprechen.

    Habs so versucht ...
    PHP-Code:
    echo "{{insert_content::".$var[$i."}}"
    ... so gehts leider nicht da er mir auf der Webseite nur die echo Zeile anzeigt (z.B. {{insert_content::32}} ) , aber nicht den Inhalt des Inhaltselement.

    Weiters hab ich es im Modul mit verschachtelten Inserttags versuchen ...
    Code:
    {{insert_content::{{file::script.php}}}}
    das geht aber schon gar nicht.

    Kann mir da jemand helfen wie ich einzelne Inhaltslemente aus einem Template ansprechen kann?

    Lg
    Erich

  2. #2
    Contao-Nutzer Avatar von epdesign
    Registriert seit
    21.04.2011.
    Ort
    Mödling - Österreich
    Beiträge
    13

    Standard

    fehler im beitrag gefunden.

    so sollte es ausschauen:
    PHP-Code:
    echo "{{insert_content::".$var[$i]."}}"

  3. #3
    Gesperrt
    Registriert seit
    02.12.2009.
    Ort
    Berlin
    Beiträge
    103

    Standard

    Der Trick bei Insert-Tags ist, dass man kein echo (PHP) braucht.
    Man schreibt einfach das Insert-Tag ins HTML ohne echo.

    Contao erstellt das HTML des Templates als String und wird die Insert-Tags
    später dann ersetzen.

    Insert-Tags sind sozusagen eine einfache Möglichkeit um in Content-Elementen und auch in Templates ohne PHP Code auszukommen.
    Es gibt aber auch die Methode replaceInsertTags($strBuffer, $blnCache). Diese kann man nutzen, wenn man im PHP ein Insert-Tag nutzen will und evtl. das Ergebnis eines Insert-Tags in einer Variablen speichern und weiterverarbeiten will.

    Also in deinem Fall wäre es besser im HTML/Template folgendes zu schreiben:

    HTML-Code:
    <div id="mein_ce">
        {{insert_content::<?php echo $var[$i]; ?>}}
    </div>
    Viele Grüße,
    Matthias
    Geändert von matths (02.12.2011 um 20:03 Uhr)

  4. #4
    Contao-Nutzer Avatar von epdesign
    Registriert seit
    21.04.2011.
    Ort
    Mödling - Österreich
    Beiträge
    13

    Standard

    Hallo!

    So funktionierts leider nicht, ich möchte ja die ID dynamisch per PHP generieren, und dazu muß ich meinen PHP-Code in ein Template schreiben.
    z.B. so
    PHP-Code:
    echo "{{insert_content::".$var."}}"
    oder so
    PHP-Code:
    <div id="mein_ce">
        {{insert_content::<?php echo $var?>}}
    </div>
    ... kommt auf selbe raus.

    Die andere Variant ist das ich das Inserttag ins Modul schreibe, dann müßte es ja so ausschauen (glaube ich zumindest):
    HTML-Code:
    {{insert_content::{{file::errechneIdScript.php}}}}
    Wie schon erwähnt geht das aber auch nicht.

    Ich denke ich muß da im Template mit den Contao Variablen arbeiten, aber hier blicke ich überhaupt nicht durch.
    Gibt es hier vieleicht einen einfachen Variablenpfad zu den Inhaltselementen der Artikeln, den ich dann mit der richtigen ID verwenden kann?


    Lg
    Erich

  5. #5
    Gesperrt
    Registriert seit
    02.12.2009.
    Ort
    Berlin
    Beiträge
    103

    Standard

    Hallo epdesign,

    ich weiss nicht, wie ich mich verständlich machen kann. Ich habe jetzt einfach in einem Template folgendes anhand des Insert-Tags {{ env :: path }} ausprobiert: Ich habe in z.B. ce_text.html5 folgendes geschrieben:

    PHP-Code:
    {{env::path}}
    <br />

    {{env::<?php echo "path"?>}}
    <br />

    <?php $str "path"?>
    {{env::<?php echo $str?>}}
    <br />

    <?php echo $this->replaceInsertTags('{{env::path}}'); ?>
    <br />

    <?php echo $this->replaceInsertTags('{{env::'.$str.'}}'); ?>
    <br />
    Das Ergebnis ist, dass ich den Pfad 5 Mal untereinander ausgegeben bekomme.

    Probier das doch bitte mal aus!!! Das funktioniert so!
    Und das sollte dann doch auch mit anderen Insert-Tags funktionieren!

    Natürlich kannst Du auch in (d)einem Frontend-Modul etwas mit PHP zusammenbauen und das dann mit $this->Template->meine_Daten an's Template weitergeben und dort mit $this->meine_Daten darauf zugreifen. Aber wenn Du schon absehen kannst, dass es für Deinen Anwendungsfall ein Insert-Tag gibt, dann mach Dich mit denen erstmal vertraut.

    Wenn Du ein "echo ...." im gerenderten HTML siehst, dann hast Du jedenfalls kein <?php // --hier der PHP Code-- ?> drumherum gemacht.

    Viele Grüße,
    Matthias

  6. #6
    Contao-Nutzer Avatar von epdesign
    Registriert seit
    21.04.2011.
    Ort
    Mödling - Österreich
    Beiträge
    13

    Standard

    Hallo Matthias!

    Erstmals DANKE für dein Bemühungen!
    Habe jetzt alles durchgetestet und diese Variante funktioniert perfekt!!!
    PHP-Code:
    echo $this->replaceInsertTags('{{insert_content::'.$str.'}}'); 
    Wenn ich es so ins Template schreibe
    PHP-Code:
    {{insert_content::<?php echo "32"?>}}
    <br />
    <?php $str "32"?>
    {{insert_content::<?php echo $str?>}}
    <br />
    bekomme ich auf der Webseite nur den Text {{insert_content::32}} ausgegeben.


    Lg
    Erich

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
  •