MetaModels Workshop in Berlin
Ergebnis 1 bis 7 von 7

Thema: Kann man auf einer Seite die Anzahl der dma-Elemente und deren Inhalt auswerten?

  1. #1
    Contao-Nutzer Avatar von SeS
    Registriert seit
    17.12.2009.
    Beiträge
    78

    Standard Kann man auf einer Seite die Anzahl der dma-Elemente und deren Inhalt auswerten?

    Hallo Forum,

    ich habe eine Frage zu diesem Problem: Ich habe erfolgreich ein eigenes Template erstellt und es mehrfach auf einer Seite eingebunden. Mit dem erstellten Template gebe ich Bewertungen (Text, Autor und 1-5 Sterne) aus. Kann ich jetzt *irgendwie* die Anzahl der eingebundenen Elemente und die Summe der Sterne auslesen? "Sie haben 3 Bewertungen mit einer durchschnittlichen Bewertung von 4.66" ?

    Das könnte ich zwar am Anfang manuell machen, es kommen aber immer Bewertungen dazu, daher ist eine dynamische Lösung mir lieber.

    Danke & Gruß
    Sebastian

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

    Standard

    Kannst Du mal bitte Dein Template posten?! Ich dachte bisher immer, dazu installiert man eine Erweiterung oder programmiert sich selbst was...
    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

  3. #3
    Contao-Nutzer Avatar von SeS
    Registriert seit
    17.12.2009.
    Beiträge
    78

    Standard

    Hey Frank,
    Im Prinzip so:

    Code:
    <div class="ce_text block">
    <p><strong><?php echo $this->elements['author']; ?></strong> vergab <?php echo $this->elements['stars']; ?> Sterne.
    <p><?php echo $this->elements['reviewBody']; ?></p>
    </div>


    Zitat Zitat von Samson1964 Beitrag anzeigen
    Kannst Du mal bitte Dein Template posten?! Ich dachte bisher immer, dazu installiert man eine Erweiterung oder programmiert sich selbst was...

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

    Standard

    Da nur Du weißt, wie Du Dein Modul im DMA-Elementgenerator zusammengebaut hast, wirst auch nur Du wissen, welche Felder ausgewertet werden müssen um einen Durchschnitt zu erhalten. Voraussetzung dazu ist, daß Du über Dein Modul die Anzahl der Bewertungen und die Summe der Bewertungen gespeichert hast. Falls jede Bewertung ihren eigenen Datensatz hat, mußt Du ja nur die einzelnen Bewertungen dieser Datensätze addieren und durch die Gesamtzahl dividieren.

    Ich benutze den DMA-Elementgenerator nicht. Deshalb weiß ich nicht ob derart "komplexe" Berechnungen vor der Ausgabe möglich sind. Aber wahrscheinlich kommst Du nicht darum herum, Dein Modul mit eigenem PHP auszubauen.
    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

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.203

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Ich benutze den DMA-Elementgenerator nicht. Deshalb weiß ich nicht ob derart "komplexe" Berechnungen vor der Ausgabe möglich sind. Aber wahrscheinlich kommst Du nicht darum herum, Dein Modul mit eigenem PHP auszubauen.
    Ich denke, daß das mit dem Element-Generator eher nicht möglich ist. Der Element-Generator bekommt die Daten eines Elements und rendert sie via Template. Dann "auf zum nächsten". Das ist aus meiner Sicht so, wie wenn ich im Contao Core mehrere Inhaltselemente in einem Artikel habe. Dann wird auch jedes für sich betrachtet und weiß nichts von den anderen.

    Abhängig davon, was Du erreichen willst, ist evtl. noch die Verwendung von JavaScript ein Ansatz. Ich könnte mir vorstellen, daß Du

    • einen globalen Script-"Header" einführst, in dem Variablen definiert werden und
    • dann in jedem DMA-Template die entsprechenden Variablen veränderts (Summenberechnung)
    • zuletzt in einem Script-"Footer" die Ergebnisse ausgibst.


    Sicher nicht elegant, sollte aber gehen.
    Stammtisch Contao Bayern: http://www.contao-bayern.de

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.610
    User beschenken
    Wunschliste

    Standard

    Wenn mit JS, dann kannst du wahrscheinlich am einfachsten ein Attribut data-stars="3" in das Element generieren (Template) und das dann global auswerten.

    Ansonsten müsstest du auf der Seite erstmal herausfinden, welche von diesen Elementen ausgegeben werden und dann mit einer DB-Abfrage die entsprechenden Felder aus tl_content.dma_eg_data holen, was die serialisierten Arrays der Elemente beinhaltet. Dann mit deserialize() in ein Array wandeln und analysieren.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Nutzer Avatar von SeS
    Registriert seit
    17.12.2009.
    Beiträge
    78

    Standard

    Hey Andreas & die anderen,

    danke für eure Hinweise. Ich denke, daß ich es so machen werde: über die page-ID die dort eingebundenen, aktiven dma-Elemente auslesen und auswerten und dann die Zahlen ausgeben. Ich habe nach einer eleganteren Lösung gesucht aber die ist praktikabel. Sobald ich das umgesetzt habe gibt es hier auch eine Lösung für andere.

    Danke & Gruß
    Sebastian

    Edit: Genau! Über tl_content

    Zitat Zitat von Andreas Beitrag anzeigen
    Wenn mit JS, dann kannst du wahrscheinlich am einfachsten ein Attribut data-stars="3" in das Element generieren (Template) und das dann global auswerten.

    Ansonsten müsstest du auf der Seite erstmal herausfinden, welche von diesen Elementen ausgegeben werden und dann mit einer DB-Abfrage die entsprechenden Felder aus tl_content.dma_eg_data holen, was die serialisierten Arrays der Elemente beinhaltet. Dann mit deserialize() in ein Array wandeln und analysieren.

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
  •