Ergebnis 1 bis 4 von 4

Thema: Nachrichten-Modul um eine Palette erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    13.06.2013.
    Beiträge
    99

    Standard Nachrichten-Modul um eine Palette erweitern

    Hey Leute,

    ich stehe gerade total auf dem Schlauch, vielleicht kann mir jemand von euch helfen!

    Ich möchte das Nachrichten-Modul mit einer eigenen Erweiterung lediglich um eine Palette mit eigenen Felder erweitern...
    Wie ich Felder zu einer bestehenden Palette hinzufüge, weiß ich – funktioniert auch.
    Ich finde allerdings nichts dazu wie eine man eine Palette mit eigenen Felder hinzufügt.

    Freue mich auf eure Antworten!

    Nicolas

  2. #2
    Contao-Nutzer
    Registriert seit
    13.06.2013.
    Beiträge
    99

    Standard

    Ich bin bereits ein bisschen weiter gekommen:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_news']['palettes']['default'] = str_replace(
        
    'teaser''teaser,{teaser_legend};{school_legend},location'
        
    $GLOBALS['TL_DCA']['tl_news']['palettes']['default']
    );

    /**
     * Fields
     */
    $GLOBALS['TL_DCA']['tl_news']['fields']['location'] = array
    (
        
    'label'     => &$GLOBALS['TL_LANG']['tl_news']['location'],
        
    'exclude'   => true,
        
    'search'    => true,
        
    'sorting'   => true,
        
    'flag'      => 1,
        
    'inputType' => 'text',
        
    'eval'      => array('maxlength'=>255),
        
    'sql'        => "varchar(255) NOT NULL default ''"
    ); 
    Erzeugt folgendes:

    Bildschirmfoto 2015-11-18 um 23.36.08.png

    Nun suche ich nach "teaser" und ersetze es mit "teaser" und füge anschließend meine neue Palette "{school_legend}" und mein eigenes Feld "location" ein.
    Das kann doch aber so nicht richtig sein, oder?
    Gibt es hier eine einfachere Methode?

    Jemand eine Idee wie ich hier weiter komme? Ist meine erste "Erweiterung".

    Nicolas
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Nicolas (18.11.2015 um 22:47 Uhr)

  3. #3
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.082
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wenn du dir in der Datei system/modules/news/dca/tl_news.php anschaust, was da an Paletten und Feldern definiert ist, dann wirst du nach dem Kommentar "// Pallettes folgendes finden (in Contao 3.5.4):

    PHP-Code:
            // Palettes
            
    'palettes' => array
            (
                    
    '__selector__'                => array('addImage''addEnclosure''source''published'),
                    
    'default'                     => '{title_legend},headline,alias,author;{date_legend},date,time;{teaser_legend},subheadline,teaser;{image_legend},addImage;{enclosure_legend:hide},addEnclosure;{source_legend:hide},source;{expert_legend:hide},cssClass,noComments,featured;{publish_legend},published'
            
    ), 
    'default' wird also mit einem String initialisiert, dessen Aufbau relativ offensichtlich ist. Jetzt geht es darum, in diesen String deinen zusätzlichen Abschnitt und dein darin stehendes Feld unterzubringen. Im Ergebnis sollte der String dann so aussehen:
    PHP-Code:
    '{title_legend},headline,alias,author;{date_legend},date,time;{teaser_legend},subheadline,teaser;{school_legend},location;{image_legend},addImage;{enclosure_legend:hide},addEnclosure;{source_legend:hide},source;{expert_legend:hide},cssClass,noComments,featured;{publish_legend},published' 
    Das dürfte aber dein str_replace eigentlich nicht korrekt bewerkstelligen, weil der Suchstring "teaser" mehrfach vorkommt und somit jedes Vorkommen auch ersetzt werden müsste. Klappen müsste ein str_replace('teaser;', 'teaser;{school_legend},location;', $GLOBALS...);
    Denn der Suchstring 'teaser;' kommt nur einmal vor. Man macht es per Stringmanipulation, damit es möglichst "updatesicher" ist. Natürlich ist es trotzdem nicht absolut updatesicher, falls nach "teaser" noch ein weiteres Feld im Abschnitt teaser_legend eingefügt würde, wird der Suchstring 'teaser;' nicht mehr gefunden und somit deine Ergänzung nicht mehr durchgeführt. Solange nicht genau diese Änderung an dieser Stelle passiert, klappt es aber immerhin. Es ist also immer noch updatesicherer (netter Begriff), als wenn man den angestrebten String einfach direkt einsetzen würde. Das würde jegliche Änderungen am String, die durch ein Update eingeführt würden, direkt wieder wegwerfen. Eventuelle neu eingeführte Abschnitte und Felder wären weg. Es würde aber mit der aktuellen Contao-Version funktionieren, außer wenn noch andere Erweiterungen an dem String rumdoktorn . Müsste dann halt nach jedem Contao-Update geprüft und nötigenfalls angepasst werden.

  4. #4
    Contao-Nutzer
    Registriert seit
    13.06.2013.
    Beiträge
    99

    Standard

    Hey tab,

    danke für deine Erklärung, top!
    Funktioniert nun auch mit deinem Codevorschlag.

    Ich hoffe dieser Post hilft dem ein oder anderen ebenfalls!
    Hier noch mal die gesamte Lösung für eine Erweiterung des Nachrichtenmoduls um eine eigene Palette, inkl. eigenem Feld:

    eigenesModul/dca/tl_news.php
    PHP-Code:
    /**
     * Palettes
     */
    $GLOBALS['TL_DCA']['tl_news']['palettes']['default'] = str_replace(
        
    'teaser;''teaser;{school_legend},location;'
        
    $GLOBALS['TL_DCA']['tl_news']['palettes']['default']
    );


    /**
     * Fields
     */
    $GLOBALS['TL_DCA']['tl_news']['fields']['location'] = array
    (
        
    'label'     => &$GLOBALS['TL_LANG']['tl_news']['location'],
        
    'exclude'   => true,
        
    'search'    => true,
        
    'sorting'   => true,
        
    'flag'      => 1,
        
    'inputType' => 'text',
        
    'eval'      => array('maxlength'=>255),
        
    'sql'        => "varchar(255) NOT NULL default ''"
    );

    ?> 
    Nicolas

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
  •