Ergebnis 1 bis 7 von 7

Thema: Klasse Comments überschreiben

  1. #1
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    72

    Standard Klasse Comments überschreiben

    Hallo,

    ich versuche, die Comments.php klasse zu überschreiben da ein ein paar mehr Felder bei den Kommentaren brauche.

    Die Struktur ist jetzt so:

    /system/modules/myComment/classes/myComments.php

    PHP-Code:
    namespace Contao;

    /**
     * Class Comments
     *
     * @copyright  Leo Feyer 2005-2014
     * @author     Leo Feyer <https://contao.org>
     * @package    Comments
     */
    class myComments extends \Comments
    {

        
    /**
         * Add comments to a template
         * @param \FrontendTemplate
         * @param \stdClass
         * @param string
         * @param integer
         * @param mixed
         */
        
    public function addCommentsToTemplate(\FrontendTemplate $objTemplate, \stdClass $objConfig$strSource$intParent$varNotifies)
        {
    ... 
    in der autoload.php ist die datei/Klasse korrekt eingetragen. Dennoch wird die Originalklasse nicht überschrieben. Hab ich noch was übersehen?

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    zeig mal die autoload.php
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    72

    Standard

    PHP-Code:
    ClassLoader::addClasses(array
    (
        
    // Classes
        
    'Contao\myComments'              => 'system/modules/myComment/classes/myComments.php',
    )); 
    Ich wundere mich gerade über das komma in der array zeile. Wurde aber so von contao generiert, die Datei..

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Wenn du die kommplett überschreiben willst, dann musst du das Contao auch sagen.
    PHP-Code:
    ClassLoader::addClasses(array
    (
        
    // Classes
        
    'Contao\Comments'              => 'system/modules/myComment/classes/myComments.php',
    )); 

    in der autoload.ini sollte dann auftauchen:
    Code:
    ;;
    ; List modules which are required to be loaded beforehand
    ;;
    requires[] = "core"
    Wo ich mal hoffe dass das Kommentarmodul zum Core gehört, sonst müsste das sogar direkt angegeben werden.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    72

    Standard

    dann muss ich meine Klasse umbenennen:

    myComments.php:
    PHP-Code:
    namespace Contao;

    class 
    Comments extends \Frontend
    { .. } 
    sonst bekomme ich einen error "Class comments not found". Da hilft es auch nicht wenn ich in die autoload.ini noch erweitere:

    Code:
    ;;
    ; List modules which are required to be loaded beforehand
    ;;
    requires[] = "core"
    requires[] = "comments"
    Wenn ich das mache dann werden die Kommentare allerdings nicht mehr eingetragen, es passiert eigentlich garnix mehr. (Auch kein Fehler)

    Ich verstehe das Problem nicht. Leo beschreibt das doch in der Doku als ganz einfach, und ich mach nix anderes..
    Geändert von benfolds (14.08.2014 um 09:06 Uhr)

  6. #6
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Da beschreibt er wie man eine Methode überschreibt mittels eigener Klasse.
    Wenn es das ist was du willst, dann lass es so wie zuerst, also eigener Klassenname. Dann musst du aber noch die Globals Definition finden um die eigene für Comments zu registrieren wie in der Anleitung beschrieben.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  7. #7
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    72

    Standard

    Es funktioniert so wie du gesagt hast. Die klasse überschreibt die bestehende in der autoload.php, muss aber genau so heißen, auch der Dateiname muss genauso sein. Jetzt läuft es also Danke für deine Hilfe!!

    Martin

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
  •