Ergebnis 1 bis 5 von 5

Thema: Module in Contao überschreiben?

  1. #1
    Contao-Nutzer
    Registriert seit
    20.05.2016.
    Ort
    Nürnberg
    Beiträge
    9

    Frage Module in Contao überschreiben?

    Hey, ich hätte da mal eine grundsätzliche Frage an die Entwickler unter Euch.

    Und zwar möchte ich das interne Contao-Modul "Listing" (Auflistung) verändern. In meinem Fall möchte ich die Member aus tl_member im Frontend auflisten und die Details-URL soll nicht die ID im Parameter mitgeben (/?show=id) sondern den Benutzernamen aus der Datenbank (/?show=username). Nach längerem rumstöbern im Contao-Core, bin ich auf die Datei "ModuleListing.php" gestoßen. Mir ist bewusst, dass ich diese Datei nicht bearbeiten sollte. Allein wegen der Update-Sicherheit nicht. Jedoch habe ich dort womöglich eine Antwort auf mein Problem gefunden.

    Ich habe in dieser Datei direkt am Anfang den strPK, also den Primary Key, von ID auf username geändert. Konnte mir herleiten das er nun nicht mehr die ID sondern den username als Schlüssel nimmt. Daraufhin konnte ich auch jeden Member mit dem URL-Parameter /?show=username aufrufen.

    Meine Frage nun: Kann ich diese Datei so überschreiben, dass der Wert am Ende meinem Wunsch entspricht oder ist das für meinen Fall nicht der richtige Ansatz?

    Freu mich auf Eure antworten und hoffe Ihr könnt mir weiterhelfen!
    Geändert von Ocean (20.05.2016 um 16:08 Uhr)

  2. #2
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    Hallo Ocean,

    ja, das geht. Du kannst dir eine kleine Erweiterung erstellen, die die Klasse überschreibt.
    Schau mal hier: https://docs.contao.org/books/manual...schreiben.html

    Evtl. hilft dir das schon mal.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  3. #3
    Contao-Nutzer
    Registriert seit
    20.05.2016.
    Ort
    Nürnberg
    Beiträge
    9

    Standard

    Hallo Kester und danke für deine Antwort!

    Ich habe mich nun etwas damit beschäftigt und versucht dieser Contao-Beschreibung zu folgen. Ich habe einen neuen Ordner in Modules erstellt und dort meine neue "Version" des Modules hinzugefügt. Eine ModuleMyListing.php und einen config-Ordner mit meiner config.php. Jetzt ist anscheinend irgendwo der Wurm drinnen. Das Auflistungs-Modul wird nicht mehr im FE angezeigt/ausgeführt.

    Meine config.php:
    PHP-Code:
    $GLOBALS['FE_MOD']['application']['listing'] = 'ModuleMyListing'
    Meine ModuleMyListing.php
    PHP-Code:
    class ModuleMyListing extends ModuleListing
    {
        
    /**
         * Primary key
         * @var string
         */
        
    protected $strPk 'username';

    Ich bin mir unsicher ob der Array-Pfad in der config.php korrekt ist. Ich selbst habe aber nicht mehr gefunden.
    Habe das Gefühl ich übersehe womöglich auch was banales.

  4. #4
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard Module in Contao überschreiben?

    Hast du eine entsprechende autoload.php?

    Du hast zwei Möglichkeiten.

    1) du überschreibst du komplette Klasse. In dem Fall ist es nicht nötig das FE Modul neu zu registrieren. Dann musst du nur den entsprechenden Eintrag in deiner autoload.php haben. Hier kannst du dann einfach die original Klasse in dein Verzeichnis kopieren, und dann deine Anpassungen vornehmen.

    2) du erweiterst die vorhanden Klasse. In dem Fall musst du dann auch den FE Modul registrieren. Dann solltest du aber überall konsequent mylisting anstatt listing verwenden. Dann ist es möglich, beide Arten des Listings zu verwenden.

    In beiden Fällen musst du aber deine Klasse via autoload.php bekannt machen.

    Gruß Kester
    Geändert von kmielke (21.05.2016 um 08:30 Uhr)
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  5. #5
    Contao-Nutzer
    Registriert seit
    20.05.2016.
    Ort
    Nürnberg
    Beiträge
    9

    Daumen hoch

    Vielen Dank für deine Hilfe!!

    Ich habe mich für die zweite Variante entschieden und dank dem Autoload-Creator konnte ich die Klasse und somit auch das Modul überschreiben.

    Es ist oft sau knifflig aber wenn man es erstmal raus hat, freut man sich um so mehr.

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
  •