Ergebnis 1 bis 5 von 5

Thema: News per Ajax laden -> HTML Template verwenden

  1. #1
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard News per Ajax laden -> HTML Template verwenden

    Hallo,

    ich bin dabei News (News-Liste) aus diversen Newsarchiven per Ajax zu laden. Der Datentransfer für den Request funktioniert bereits, jedoch frage ich mich jetzt
    wie ich die Daten, die ich aus der Datenbank geholt habe (Newseinträge), in das entsprechende News-Template bekommen.

    Sprich ich möchte das HTML so generieren wie es das Contao Framework auch tut und diese HTML-Blöcke (pro News ein Block)
    dann zurück ans Frontend geben, so dass man im Frontend mittels JS nur noch diese Blöcke an die entsprechende Stelle setzen muss.

    Die Frage ist ob etwa so an mein Ziel komme (nur mal als grober Ansatz):

    Code:
    //...Schleife
    
    $template = new \FrontendTemplate('meinNewsTemplate'); // ...oder irgendeine andere Klasse als FrontendTemplate
    $template->setData($objNews->row()); // $objNews = Datensatz
    $meinOutput[] = $template->parse();
    
    //...Schleife-Ende
    
    //-> Output per Ajax zurück an den Client

    Bei dem Template handelt es sich nicht um ein wirkliches Frontend-Template was in einer config.php registriert ist,
    sondern lediglich nur um ein HTML-Snippet welches in einem Unterordner vom "templates"-Ordner liegt.
    Etwas ähnliches habe ich auch schon im Contao Framework gesehen, aber so scheint es bei mir nicht zu funktionieren.

    Natürlich könnte ich jetzt auch den Inhalt des Templates kopieren und meinen Output komplett selber per php schreiben.
    Da dieses Template aber bereits an anderen Stellen verwendet wird, würde ich es gerne laden und ihm Werte mitgeben,
    um dann am Ende ein Array mit meinen generierten News-Items per Ajax zurückschicken.

    Kann mir da jemand nen Tip geben? Ich sag schon mal "Danke" im voraus

  2. #2
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Hat keiner eine Idee? Ich komm hier irgendwie nicht weiter...

    Nochmal ganz kurz zusammengefasst:

    - News mit Ajax laden
    - Datensätze aus der tl_news holen (nicht alle, sondern bestimmte je nach Ajax-Parametern)
    - Die News werden, wenn man sie normal lädt (nicht mit Ajax), mit einem angepassten News-Template erzeugt, welches im "template"-Ordner von Contao liegt

    Datentransfer mit Ajax und Datenbankabfragen funktionieren schon.

    Nur wie kann ich dieses News-Template verwenden, damit ich pro Datensatz einen HTML-Block damit generieren kann?

    Sprich das News-HTML genauso bauen wie es Contao tut. Die HTML-Blöcke werden dann mit JS auf der Seite platziert.

    Ich habe auch schon mit Debugging versucht zu verstehen wie Contao die News lädt, aber irgendwie bin ich daraus nicht ganz schlau geworden bzw. beschleicht mich das Gefühl dass ich es ein klein wenig anders machen muss.

    Ich hoffe mir kann jemand helfen....

    Gruß Daniel

  3. #3
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Hallo nochmal,

    nachdem mir leider keiner helfen konnte, habe ich nun die Lösung gefunden.
    Ich wollte Euch nur mal kurz den Code posten, damit andere die das gleiche Problem haben hier die Lösung finden.

    Code:
            $archiveIds = $this->Input->post('archiveId');
            $numNews = $this->Input->post('numNews');
            $offset = $this->Input->post('offset');
            
            $objModule = \ModuleModel::findByPk('Modul-ID der Newslist');
            $strClass = \Module::findClass($objModule->type);
            
            /** @var $objModule ModuleNewsList */
            $objModule = new $strClass($objModule, $this->strColumn);
            $objModule->news_archives = $archiveIds;
            $objModule->numberOfItems = $numNews;
            $objModule->skipFirst = $offset;
    
            $objModule->generate();
            
            $result['newsHtml']= $objModule->Template->articles; 
            echo json_encode($result);
            exit;
    Als erstes die Parameter sammeln, dann News-Modul laden und Parameter setzen und alles generieren lassen.
    Fertig Ich hoffe es kann weiterhelfen.
    Geändert von buddy274 (19.08.2016 um 13:05 Uhr)

  4. #4
    Contao-Nutzer Avatar von fooddesign
    Registriert seit
    01.04.2011.
    Ort
    Zürich, Schweiz
    Beiträge
    84

    Standard Genau das such ich!

    Genau das versuche ich jetzt schon seit 2 Tagen.

    Kannst du mir den ganzen workflow posten.

    wie und wo und mit was (ev. simple-ajax oder so?) machst du den ajax request.

    kann ich dann das news-list template ganz normal gestalten einfach mit den neuen Vriablen


    Da waere super wenn du mich von dem fast Endlosen - dass muss doch irgendwie gehen - erloesen koenntest.

    Besten Dank

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

    Standard

    Was genau möchtest du machen?

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
  •