Ergebnis 1 bis 10 von 10

Thema: kommende Events, erster voll, weitere Teaser

  1. #1
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard kommende Events, erster voll, weitere Teaser

    Hallo,

    ich versuche eine Eventliste zu erstellen, die kommende Events anzeigt. Randbedingung: es gibt max. einen Event pro Tag.
    Dabei soll der erste Event vollständig, von allen weiteren nur der Teaser angezeigt werden.

    Mein Versuch mit 2 Listen zu arbeiten (1. Liste nur kommende, max. 1 Event, 2. Liste kommende Events mit Template event_teaser) scheiterte daran, dass die 2. Liste den nächten Termin nochmal ausgibt...

    Ich hoffe, es geht irgendwie per Modifikation eines Template und ohne Eingriff in den Code.
    Hat vielleicht jemand einen Tipp für mich?

    Gruß, folkfreund

  2. #2
    Contao-Fan
    Registriert seit
    29.07.2010.
    Beiträge
    516

    Standard

    Hallo,

    müsste im Prinzip die Eventliste so erweitert werden, wie in der Nachrichtenliste, wo Elemente übersprungen werden können.

  3. #3
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Klingt doch richtig mit 2 Listen.
    1. Ein Event, full template
    2. N-viele Events,template mit teaser, und erstes überspringen

    Warum geht das nicht? Hab Deine Begründung nicht verstanden.

    Grüße,
    Tim

    Auch überspringen gibts nicht.

    Dann im mod_eventlist $this->events abgreifen, sammeln, den ersten raushauen und dann weitergeben.
    Sollte nicht viel Aufwand sein.
    Wenn die nicht eh schon in einer foreach Schleife abgegrast werden. Dann einfach darin den ersten überspringen mit ner Zählvariablen.

    $i = 0;
    foreach ( )
    {
    if ($i = 0) continue;

    // ab 2 weiter
    $i++;
    }




    Vorher vielleicht noch im Template eine Art TemplateSwitch einbauen, dass das nicht mit allen Eventlisten gemacht wird.
    Geändert von Tim G (18.03.2012 um 06:21 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  4. #4
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Danke Nachtarbeiter!

    @Tim G
    Genau so wollte ich es machen - aber im mod_eventlist schein $this-events bereits den formatierten Inhalt des Moduls zu enthalten. Da ist das Array schon längst abgearbeitet. Ich vermute, das passiert irgendwo im Code.
    Gibt es vielleicht einen Hook, mit dem die Liste nochmal bearbeitet werden kann, bevor die einzelnen Einträge formatiert werden?

    Die Idee mit dem 'n überspringen' wäre natürlich klasse. Das geht aber nicht im Standardmodul. Gibt es sowas in einer Erweiterung?

    Gruß, folkfreund

  5. #5
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo folkfreund,
    du guckst einfach im falschen Template.
    Alle mod_irgendwas Templates beinhalten nur das Drumherum (Umschließendes Div von dem Modul z.b.).
    Du solltest mal im Modul schauen, welches Template du da genau vewendest um dann da drinn die Anpassungen vorzunehmen.

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  6. #6
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    @folkfreund
    Achso, dann den getAllEvents, oder getEvents HOOK. Weiss grad nicht den genauen Namen. Die teaserimages Erweiterung nutzt den auch.
    Das ist aber eigentlich zu aufwendig.
    Ich würde mir eine temporäre globale Variable in der localconfig oder so hinterlegen und im events template abfragen ob die belegt ist, wenn nicht das event ausgeben und danach die Variable mit nem Wert belegen.
    Dann trifft das nächste Event auf eine beschriebene Variable und wird nicht gerendert. Fertig.
    Würde auch mit nem Array gehen und bestimmten Indexen.
    Geändert von Tim G (19.03.2012 um 07:00 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  7. #7
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Danke für die Tipps, leider noch kein Erfolg.

    @MacKP:
    Für die Eventlist gibt es (glaub ich) kein Template außer mod_eventlist ('nur das Drumherum') und event_full, event_teaser ... (alle für jeweils EIN Event).
    Die Logik für Zeitbereich, Sortierung, Pagination findet in ModuleEventlist.php statt.

    @Tim G:
    Der Hook 'getAllEvents' sieht erstmal vielversprechend aus. Bei genauerem Hinsehen kommt aber auch hier der Haken (wie der Name schon sagt ;-)):
    getAllEvents liefert ALLE Events. Mit dem Hook kann man Events filtern, aber erst danach finden die Sortierung, Filterung (z.B. nur kommende), Pagination etc. statt. Es reicht also nicht, einfach den ersten Event rauszuschmeißen. Wenn überhaupt, dann müsste hier die Sortierung und Filterung nochmal gemacht werden, um den nächsten kommenden Event zu finden. Nicht besonders elegant...

    Ich hatte noch einen ganz anderen Ansatz überlegt, nämlich den zuviel angezeigten Termin per CSS auszublenden. Leider ist die Zuodnung der Klassen für mehrere Termine pro Tag ausgelegt. In meinem Szenario erhält also jeder Termin die class 'first' - es ist ja immer der erste des Tages. Vielleicht kann ich über die Templates irgendwie günstigere CSS-Klassen einfügen?

    Weitere Ideen? Ich wäre sehr dankbar.

    folkfreund

  8. #8
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Viel zu umständlich.
    Machs mit einer bzw. zwei globalen Variablen und einem event_full template.

    So funktionierts:

    1. in der z.B. initconfig die Variablen initialisieren, meine heissen so:

    PHP-Code:
    // initconfig.php
    $GLOBALS['myEvents']['showEvent'] = array(0);  // liste an durchgezählten Events, die angezeigt werden sollen
    $GLOBALS['myEvents']['count'] = 0// aktueller Zähler 
    2. Ein neues event_full template nehmen und oben einfach abfragen, ob der aktueller Zähler, also das aktuelle Event angezeigt, bzw. das Template durchlaufen werden soll:
    Wenn ja, Template durchlaufen lassen und Zähler hochzählen,
    Wenn nicht, Zähler hochzählen und Template verlassen.

    PHP-Code:
    <?php 
    if( !in_array($GLOBALS['myEvents']['count'], $GLOBALS['myEvents']['showEvent']) )
    {
        
    $GLOBALS['myEvents']['count'] += 1// hochzählen für nächstes Event
        
    return;
    }  
    ?>

    /**
     * normales template hier
     */

     // hochzählen für nächstes Event
    <?php $GLOBALS['myEvents']['count'] += 1?>

    Fertig.
    So, kannst du beliebige Events überspringen, bzw. anzeigen lassen.

    Die 4 weitern kann man ja einfach im Modul einstellen, also ein 2. Eventliste Modul.

    Grüße,
    Tim
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  9. #9
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Danke Tim, das funktioniert für mich, da ich insgesamt nur wenige Events habe.
    Ich habe in deinem Beispiel einfach das NOT in der Bedingung entfernt (sonst erscheint nur der derst Event):
    PHP-Code:
    <?php  
    if( in_array($GLOBALS['myEvents']['count'], $GLOBALS['myEvents']['showEvent']) ) 

        
    $GLOBALS['myEvents']['count'] += 1// hochzählen für nächstes Event 
        
    return; 
    }   
    ?>
    Dieses Verfahren funktioniert aber nicht, wenn man bei vielen Events die Pagination verwenden möchte, da auch auf den Folgeseiten wieder Events übersprungen werden (die Initialisierung in der initconfig.php wird für jede Seite neu durchgeführt). Dann müsste man entweder deine Logik weiter aufbohren, oder eben doch einen der 'viel zu umständlichen' Wege gehen.

    Nochmal vielen Dank für die Hilfe,
    folkfreund

  10. #10
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Ja, dann vielleich doch die Newsliste erweitern um ein Feld, das wie bei der Eventliste ein überspringen ermöglicht. Dann kann man es modulabhängig machen.

    Mit der globalen kann man noch zusätzlich die ID des Moduls einbeziehen. Dann kann man auch recht schnell unterschiedliche Verhalten erstellen.

    Viele Weg führen nach Rom.

    Tim
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

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
  •