Ergebnis 1 bis 12 von 12

Thema: Module "News": compile() überschreiben, aber wie?

  1. #1
    Contao-Nutzer
    Registriert seit
    04.11.2009.
    Beiträge
    111

    Standard Module "News": compile() überschreiben, aber wie?

    Hallo zusammen,

    bin gerade dabei, die News-Erweiterung nach meinen Vorstellungen zu erweitern. Leider aber habe ich noch nicht herausgefunden, wie ich die bestehenden ModuleNewsList.php bzw. ModuleNews.php erweitern kann. Per
    PHP-Code:
    class ModuleNewsExport extends ModuleNews 
    will es leider nicht funktionieren, so dass ich für erste Tests gezwungen war, meine Ergänzungen direkt in die compile() von ModuleNews zu schreiben.

    Kann mir da vielleicht jemand auf die Sprünge helfen? Es handelt sich dabei um Contao 2.11.3. Das wäre Klasse.

    Viele Grüße,

    dillscher
    Geändert von dillscher (18.12.2012 um 08:31 Uhr)

  2. #2
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard

    Wird dein Modul denn nach News aufgerufen? Sprich: liegt deine Erweiterung alphabetisch hinter News? Sonst kennt Contao die Klasse ja noch nicht.
    Ansonsten sollte das so klappen. Natürlich musst du deine Klasse noch registrieren.

    Siehe hier:
    https://contao.org/de/overriding-class-methods.html

  3. #3
    Contao-Nutzer
    Registriert seit
    04.11.2009.
    Beiträge
    111

    Standard

    Hallo lomex,

    danke für Deine Antwort.

    Ja, mein Modul liegt alphabetisch hinter der Erweiterung "news". Das passt soweit. Die Registrierung habe ich nun auch nochmal geprüft und nun folgendes eingetragen:

    PHP-Code:
    $GLOBALS['FE_MOD']['news'] = 'ModuleNewsExport'
    Aber nun erhalte ich im Frontend Fehlermeldungen, die den Anschein machen, als vermisse Contao nun noch mehr Daten. So zum Beispiel folgende Meldung beim Aufruf der entsprechenden Übersichtsseite mit einer newslist:

    PHP-Code:
    s/frontend/ContentModule.php(58): Controller->findFrontendModule('newslist'
    Die Newslist existiert ja bereits innerhalb der "News"-Erweiterung. Gibt es hier noch Weiteres zu beachten, um eine vollständige Erweiterung der Core-News zu ermöglichen?

    dillscher

  4. #4
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard

    Du bist in Contao 3, richtig?
    Dann musst du dich im Namespace Contao bewegen bzw. extends \Contao\NewsModul schreiben.
    Da bin ich aber nicht sattelfest.

  5. #5
    Contao-Nutzer
    Registriert seit
    04.11.2009.
    Beiträge
    111

    Standard

    Nee, bin in 2.11.3, wie ich oben geschrieben hatte. Hast Du dazu ne Idee?

    dillscher

  6. #6
    Contao-Fan Avatar von lomex
    Registriert seit
    03.07.2009.
    Ort
    Werne
    Beiträge
    791
    User beschenken
    Wunschliste

    Standard

    Hast du einen Github Account? Kannst du mal den kompletten Code / Modul posten bzw. den Link zu Github schicken?

  7. #7
    Contao-Nutzer
    Registriert seit
    04.11.2009.
    Beiträge
    111

    Standard

    Leider nein. Aber das wäre wohl ein Grund, sich einen zuzulegen. Werde mal schauen, ob ich das heute Abend machen kann. Danke schon mal für Deine bisherige Hilfe.

  8. #8
    Contao-Nutzer
    Registriert seit
    04.11.2009.
    Beiträge
    111

    Standard

    Oh, habe gerade festgestellt, dass es bei meinen Versuchen mit der News-Erweiterung wohl Konflikte mit der alphabetisch dahinter liegenden Erweiterung tags gibt, die ebenfalls den Newsreader erweitert. Muss ich nun die NewsReaderTags von tags erweitern?

    Hmm, aber das erscheint mir auch nicht richtig. Wie ist denn das Vorgehen, wenn man mit zwei unterschiedlichen Erweiterungen auf das gleiche Kernmodul zugreifen und es modifizieren will? Das wäre doch sicher ein Fall für Hooks. Muss wohl nochmal ins stille Kämmerlein und mir das genauer ansehen.

  9. #9
    Contao-Fan Avatar von webster
    Registriert seit
    14.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Also eigentlich ist Deine Vorgehensweise so korrekt. Was steht denn in Deiner compile() Methode drin? Generell geht man da so vor, dass man erst seinen eigenen (erweiterten) Code einfügt und am Ende der Methode dann ein

    PHP-Code:
    parent::compile(); 
    ausführt, damit der Code der Methode compile der Elternklasse auch ausgeführt wird. Je nach Vorhaben kann das natürlich aber auch anders ablaufen.
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

  10. #10
    Contao-Nutzer
    Registriert seit
    04.11.2009.
    Beiträge
    111

    Standard

    Hallo webster,

    vielen dank für den Hinweis. Werde mich mal darin vertiefen und Deinen Hinweis zu Herzen nehmen.

    Viele Grüße,

    dillscher

  11. #11
    Contao-Nutzer
    Registriert seit
    04.11.2009.
    Beiträge
    111

    Standard Gelöst

    Hallo nochmal,

    danke für Eure Unterstützung. Habe mittlerweile alles wie gewünscht hinbekommen ;-).

    Viele Grüße,

    Christian

  12. #12
    Contao-Fan Avatar von webster
    Registriert seit
    14.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Dann wäre es schön, wenn Du uns allen (vor allem denen, die diesen Thread irgendwann mal lesen, weil Sie das gleiche Problem haben) kurz mitteilst, wie Du Dein Problem lösen konntest.
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

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
  •