Contao-Camp 2024
Ergebnis 1 bis 7 von 7

Thema: Modul erweitern

  1. #1
    Contao-Nutzer Avatar von Spelmann
    Registriert seit
    24.11.2012.
    Ort
    Nördlich von Berlin
    Beiträge
    234

    Standard Modul erweitern

    Hallo,
    ich habe in den letzten Jahren immer mal wieder versucht Contao-Module um einzelne Felder zu erweitern. Bisher erfolglos. Ich habe ein paar Beschreibungen gefunden die aber alle extrem ausufern und nicht geeignet sind, das Prinzip an einem ganz ganz einfachen Beispiel zu verstehen. Immerhin ist es mir diesmal gelungen, dass der Aufruf des Installtools meine Änderungen registrierte und ich zum aktualisieren der Datenbank aufgefordert wurde. Im Backend tut sich aber nichts.

    Fürs erste soll einfach nur mal ein Notizenfeld beim Erstellen eines neuen Artikels zur Verfügung stehen.
    Folgendes habe ich versucht:

    1. Folgende Datei angelegt
      Code:
      root/app/Resources/contao/dca/tl_article.php
      PHP-Code:
      <?php
      $GLOBALS
      ['TL_DCA']['tl_article']['fields']['notes'] = array
      (
      'label' => &$GLOBALS['TL_LANG']['tl_article']['notes'],
      'exclude' => true,
      'inputType' => 'text',
      'eval' => array('maxlength'=>255'tl_class'=>'long'),
      'sql' => "varchar(255) NOT NULL default ''"
      );
    2. Sprachdateien angelegt
      Code:
      root/app/Resources/contao/languages/de/tl_article.php
      PHP-Code:
      <?php
      $GLOBALS
      ['TL_LANG']['tl_article']['notes'] = array
      (
       
      'Notizen',
       
      'Hier kann eine Kurznotiz hinzugefügt werden'
      );
    3. Prod-Cache erneuert
    4. Installtool -> Datenbank aktualisiert
    5. Prod-Cache erneuert


    Lege ich einen neuen Artikel an, finde ich kein Feld "Notizen"

    Völliger Holzweg oder habe ich was vergessen?

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Da fehlt Dir eigentlich nur noch der Eintrag in der Palette, damit das Feld auch im Backend angezeigt wird:
    https://docs.contao.org/dev/framewor...temanipulator/

  3. #3
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.853
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Schau mal hier rein.

    Hier wirst du sehen, dass es unter 4.9 (fast) einfach ist, Felder hinzuzufügen und dass du '/app/Resources/contao/dca/tl_article.php' durch '/contao/dca/tl_article.php' ersetzen kannst.
    Grüsse
    Bernhard


  4. #4
    Contao-Nutzer Avatar von Spelmann
    Registriert seit
    24.11.2012.
    Ort
    Nördlich von Berlin
    Beiträge
    234

    Standard

    Hallo, derRenner
    Vielen Dank für den Hinweis. Schaue ich mir im Anschluß an. Ich würde das aber gerne erst einmal konsequent mit einer Methode erfolgreich lösen, damit das dann auch für andere nachvollziehbar bleibt, die, wie ich, eher Frontend-Entwickler sind.

  5. #5
    Contao-Nutzer Avatar von Spelmann
    Registriert seit
    24.11.2012.
    Ort
    Nördlich von Berlin
    Beiträge
    234

    Standard

    Indem ich ich die
    Code:
    root/app/Resources/contao/dca/tl_article.php
    um folgenden Code ergänzt habe,
    PHP-Code:
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    PaletteManipulator::create()
        
    // apply the field "custom_field" after the field "title"
        
    ->addField('notes''title')

        
    // now the field is registered in the PaletteManipulator
        // but it still has to be registered in the globals array:
        
    ->applyToPalette('default''tl_article')
        ; 
    wird mein Feld tatsächlich angezeigt und die Einträge werden auch gespeichert. Prima!

    Wie bekomme ich mein Feld jetzt zum Beispiel unter den Artikelteaser? Irgendwo muss doch, wenn ich das richtig verstehe, ein Default-DCA für tl_article existieren wo ich mir die Feldnamen abgucken kann um meine eigenen Felder wunschgemäß zu platzieren oder?

  6. #6
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    436

    Standard

    Zitat Zitat von Spelmann Beitrag anzeigen
    Wie bekomme ich mein Feld jetzt zum Beispiel unter den Artikelteaser? Irgendwo muss doch, wenn ich das richtig verstehe, ein Default-DCA für tl_article existieren wo ich mir die Feldnamen abgucken kann um meine eigenen Felder wunschgemäß zu platzieren oder?
    Richtig gedacht. Lad Dir auf github die entsprechende version.zip, entpack diese im Verzeichnis Deiner Wahl und suche nach tl_article.php (\core-bundle\src\Resources\contao\dca\tl_article.php).
    Darin findest Du dann das gewünschte und kannst im Palettenmanipulator die für Dich richtige Position bestimmen.

    ToM

  7. #7
    Contao-Nutzer Avatar von Spelmann
    Registriert seit
    24.11.2012.
    Ort
    Nördlich von Berlin
    Beiträge
    234

    Standard

    Cool, danke euch allen. Auch die von derRenner vorgeschlagene Methode klappt bestens.

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
  •