Ergebnis 1 bis 17 von 17

Thema: Brauche Hilfe bei Hook getAllEvents (Sortierung, Events, FE-Ausgabe)

  1. #1
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Frage Brauche Hilfe bei Hook getAllEvents (Sortierung, Events, FE-Ausgabe)

    Hallo zusammen,

    ich habe bisher noch keinen Hook benutzt und wollte jetzt mal den Hook getAllEvents benutzen, um die Events in der FE-Ausgabe absteigend zu sortieren. Ich habe mich an diese Anleitung gehalten: https://contao.org/typolight-hooks.html

    Jetzt passiert aber überhaupt nix.

    Ich habe
    PHP-Code:
    $GLOBALS['TL_HOOKS']['getAllEvents'][] = array('MyClass''getAllEvents'); 
    In die config.php über dem ?> eingefügt. Ist das richtig? Da steht doch oben man soll diese Datei nicht ändern, sondern die localconfig.php dafür benutzen.

    Dann habe ich eine Datei MyClass.php in dem Ordner system/libraries/ erstellt und dort diese Zeilen eingefügt:
    PHP-Code:
    <?php

    public function getAllEvents($arrEvents$arrCalendars$intStart$intEnd)
    {
        
    krsort($arrEvents);
        return 
    $arrEvents;
    }

    ?>
    Da nichts passiert, habe ich mir mit var_dump() das Array $GLOBALS['TL_HOOKS']['getAllEvents'] mal zum Debuggen direkt in der config.php ausgeben lassen. Da bekomme ich auch ein Array angezeigt. Jetzt habe ich das gleiche Array mit var_dump() direkt in der Events.php, dort wo der Hook sitzt und auch abgefragt wird ausgegeben und dort wird mir nur NULL angezeigt. Dann kann der Hook ja auch nicht greifen, oder sehe ich das falsch? Was hab ich da falsch gemacht?

    Gruß Andreas

  2. #2
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Warum zur Hölle in system/libraries???

    Du musst ein neues Modul machen und ab in die system/modules damit.

    config.php bezieht sich auf die config.php innerhalb deines Moduls und die Klasse gehört in den Root deines Moduls
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Aber aber mein lieber Toflar, wir haben doch alle mal klein angefangen...

    Hier einmal Module development in a nutshell:
    Zuerst einmal solltest du das alles in einem eigenen Modulordner machen.

    Nennen wir es Beispielsweise mal mymodule

    Du erstellst also in system/modules einen Ordner mymodule mit folgenden unterordnern und Dateien:
    PHP-Code:
    system/modules/mymodule
                    
    /config
                        
    /config.php
                    
    /MyModuleClass.php 
    in diese config.php musst du deine Zeile eintragen, die Datei sollte nun wie folgt aussehen:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['getAllEvents'][] = array('MyModuleClass''getAllEvents'); 
    Nun fehlt noch deine Modulklasse in MyModuleClass.php:
    PHP-Code:
    <?php
    class MyModuleClass extends Frontend
    {
        public function 
    getAllEvents($arrEvents$arrCalendars$intStart$intEnd)
        {
            
    krsort($arrEvents);
            return 
    $arrEvents;
        }
    }
    ?>
    Und siehe da, du solltest eine Ausgabe nach deinen Wynschen bekommen.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  4. #4
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    War ja auch nicht böse gemeint

    Aber das libraries-Verzeichnis ist schon sehr speziell gewählt

    Ach und ehm Andreas, zieh dir mal das rein, das hilft dir sicher! Besonders was die Ordnerstruktur angeht: http://de.contaowiki.org/typolight/FrankfurtModule
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  5. #5
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    War ja auch nicht böse gemeint
    Aber das libraries-Verzeichnis ist schon sehr speziell gewählt
    Da stimme ich dir zu, wenn gleich ich dort schon einiges an Klassen deponiere, wenn ich mir meine Module so ansehe. *g*

    Vieles davon fyhlt sich einfach in libraries und plugins zuhause da es die Basis fyr Module darstellt (naemlich APIs).
    Aber die Module gehoeren in ein eigenes Verzeichnis, da gebe ich dir definitiv Recht.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  6. #6
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Ja klar passt vieles von dir dort rein. Aber deine Module sind ja dann auch, sagen wir mal viel anspruchsvoller als die Nutzung eines Hooks
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  7. #7
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo ihr beiden,

    erstmal danke ich euch für die Hilfe. @toflar Hatte ich auch nicht böse aufgefasst, war witzig. Ich hatte den Ordner libraries genommen, weil der Ordner system/config/ einen Fehler warf Sowas kommt eben dabei raus, wenn man keine Ahnung hat, bzw. wenn in Hilfeseiten ein Wissen vorausgesetzt wird, welches man nicht hat und man auch nicht darauf hingewiesen wird.

    Ich hatte mir mal ein Modul gebastelt nach einer Anleitung hier irgendwo, wo man den Kalender um das Feld freeEntry erweitern konnte, und hatte da gleich noch mehr Felder erweitert. In diesem Modul war keine Klasse und keine config.php. Deswegen habe ich die beiden Dateien MyClass.php und config.php jetzt dort hingelegt, wie xtra gesagt hat, in die entsprechenden Ordner und mit 'class MyClass extends Frontend' erweitert.

    Leider tut sich immer noch nichts. Wenn ihr noch einen Tip dazu habt, immer her damit. Ich werde jetzt erstmal dem Linktip von Toflar folgen.

    Andreas

  8. #8
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Häng mal eine zip-Datei an
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  9. #9
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hier das Modul gezippt.
    Angehängte Dateien Angehängte Dateien

  10. #10
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    nenne dein Modul mal z_calender_abBands, dann bist du im Alphabet richtig, naemlich nach dem calendar usw.

    mit meinem Modulnamen mymodule waere es auch gegangen, weil m nach c.
    Ich denke das ist dein Problem.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  11. #11
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    ne, Mist, geht auch nicht.

  12. #12
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Was heisst funktioniert nicht?

    Der Hook aber schon? Hast du mal ein stinknormales echo eingebaut? Einfach so zum testen, ob die Methode aufgerufen wird?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  13. #13
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich hatte mal ein var_dump() eingefügt, spuckt aber nichts aus.
    PHP-Code:
    <?php
      
    class SortEventsDesc extends Frontend
      
    {
        public function 
    getAllEvents($arrEvents$arrCalendars$intStart$intEnd)
        {
            
    krsort($arrEvents);
            return 
    $arrEvents;
            
    var_dump($arrEvents);
        }
      }
    ?>

  14. #14
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Jetzt hab ich das var_dump() mal über das return gesetzt und er gibt mit das Array aus. Aber keine Änderung der Sortierung im FE.

  15. #15
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich habe jetzt herausgefunden, dass der Rückgabewert des Hooks in der Datei ModuleEventlist.php sofort wieder durch ksort() andersherum sortiert wird. Da bin ich natürlich machtlos. Zeile 95 in 2.8.RC1 und 164 in 2.7.5. Ich hatte in einem Ticket eine Anfrage gestellt, ob man nicht im Modul Eventliste die Möglichkeit anbieten könne die Liste absteigend zu sortieren. Leo sagte ich solle diesen Hook benutzen, aber wie bekomme ich das denn jetzt hin? In der Core-Datei ksort() in krsort() ändern möchte ich nicht.

    Ratlos, Andreas

  16. #16
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Ich habe jetzt herausgefunden, dass der Rückgabewert des Hooks in der Datei ModuleEventlist.php sofort wieder durch ksort() andersherum sortiert wird. Da bin ich natürlich machtlos.
    Obwohl ich als TL Neuling natürlich noch nicht sicher bin, halte ich das ksort() in "ModuleEventlist.php" für einen Bug ... es sollte nach "Events.php" verschoben werden kurz bevor der Hook aufgerufen wird:

    Code:
        // Sort data
        foreach (array_keys($this->arrEvents) as $key)
        {
            ksort($this->arrEvents[$key]);
        }
    
    +  ksort($this->arrEvents);
    
        // HOOK: modify result set
        if (isset($GLOBALS['TL_HOOKS']['getAllEvents']) && is_array($GLOBALS['TL_HOOKS']['getAllEvents']))
        {
            foreach ($GLOBALS['TL_HOOKS']['getAllEvents'] as $callback)
                ......
        }
        return $this->arrEvents;
    MfG, deerwood

  17. #17
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    So sehe ich das auch.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 18.02.2011, 10:04
  2. Brauche Hilfe für StickyFooter
    Von Flie... im Forum Layout / Templates / Holy Grail
    Antworten: 5
    Letzter Beitrag: 03.01.2011, 15:09
  3. Brauche hilfe bei Installation
    Von Hanssi83 im Forum Installation / Update
    Antworten: 10
    Letzter Beitrag: 30.08.2010, 21:42
  4. getAllEvents Hook
    Von bensolution im Forum Entwickler-Fragen
    Antworten: 5
    Letzter Beitrag: 02.04.2010, 08:12
  5. Brauche hook in PageRegular::createStyleSheets().
    Von xtra im Forum Entwickler-Fragen
    Antworten: 10
    Letzter Beitrag: 01.08.2009, 08:49

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •