Ergebnis 1 bis 3 von 3

Thema: Templates dynamisch einbinden

  1. #1
    Contao-Nutzer
    Registriert seit
    03.08.2016.
    Beiträge
    1

    Standard Templates dynamisch einbinden

    Ich bin neu in der Modulentwicklung für Contao und bitte deshalb schonmal vorab für ggf. dumme Fragen.
    Nach dem Einstieg über "screencast" habe ich mich nun an ein eigenes Modul gewagt und scheitere nun an der dynamischen Einbindung unterschiedlicher Templates für verschiedene Zwecke.
    Mit andern Worten: ich weis nicht, wie ich im PHP-Code einer Klasse ein dynamisch ausgewähltes Template einbinden kann.
    Ich versuche nochmal ein bisschen zu visualisieren:
    Es geht um eine Vakanzsuche nach freien Zimmern.
    Das Vorfeld (Formular, Suchfunktionen und Aufbau der Objektstruktur für die Ergebnisse) funktioniert bereits.
    Aus den Ergebnissen aus der Datenbank wird die Struktur gem. folgendem vereinfachten Muster erstellt (die Struktur ist objektorientiert
    aufgebaut, KLassen: Haus, Zimmer, Bilder etc.):
    Ich habe in allen Klassen eine Methode: getOutput definiert, diese soll, wo nötig, die Daten anpassen und dann ein zu diesem Objekt passendes HTML-Template laden und ausgeben und da scheitere ich.
    Die Templates (12 Stck.) habe ich in einem Ordner templates abgelegt und über die autoload.php registriert.
    Mein Problem ist nun die Einbindung aus dem blanken PHP-Code, "include / require" wird ja in Contao nicht unterstützt,
    dann habe ich noch folgende Funktionen ohne Erfolg probiert:
    - echo '{{file::haus.tpl}}' damit wird das Template zwar eingebunden, soviel ich verstanden habe aber erst beim Client und damit habe ich aus dem Template keinen Zugriff mehr auf die Daten.
    - $this->insert('haus') klappt nicht: Call to undefined method insert()

    Ich hoffe, man kann so halbwegs verstehen was ich meine ... ich bräuchte irgendeine alternative Funktion zu include, mit der ich bereits am Server eine Template-Datei einbinden kann.

    Uff, hoffentlich liest das jemand - ich bin sicher, dass ich irgendwas grundlegendes übersehe, aber nach wirklich reichlicher Suche und Dokurecherche komme ich einfach nicht weiter.
    Vielleicht kann mir jemand den entscheidenden Schups geben ...

    Vielen Dank für alle Tips

  2. #2
    Contao-Nutzer Avatar von marq
    Registriert seit
    20.03.2010.
    Ort
    Göttingen
    Beiträge
    195
    User beschenken
    Wunschliste

    Standard

    Hm?!

    Also versuchen wir das mal etwas auseinander zu nehmen. Wo legst du deine Datensätze an? Wie unterscheidest du schon bei der Eingabe ob es z.B. ein Haus oder eine Scheune ist?

    Am Anfang arbeitest du der Regel ggf. mit zwei Templates für die Listendarstellung und ein bis zu zwei weitere Templates in der Detailansicht.
    Hier mal ein Anfängerfreundliches Beispiel. in deiner Datenbank unterscheidest du hoffentlich bei der Eingabe um was es für ein Objektart es sich handelt, in diesem Beispiel mal Haus oder Scheune..

    Dann würde dein Detailtemplate in etwa so aussieht.


    Code:
    <div>
    
    <?php if ($myart="scheune") { ?>
    
    <h1>Scheune </h1>
    <p><?=$myText;?></p>
    
    <?php } else { ?>
    
    <h1>Haus</h1>
    <p><?=$myText;?></p>
    
    <?php } ?>
    
    </div>

  3. #3
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    In Deinem FE-Modul weist Du einfach das entsprechende Template zu:
    PHP-Code:
    $template = new \FrontendTemplate('Templatename'); 
    Die Programmlogik, wann welches Template benutzt wird, mußt Du natürlich selbst mit PHP zusammenbasteln.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

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
  •