Contao-Camp 2024
Ergebnis 1 bis 9 von 9

Thema: tl_news Felder in eigener Palette hinzufügen

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

    Support Contao

    Standard tl_news Felder in eigener Palette hinzufügen

    Hallo,

    ich stehe gerade mal an.
    Ziel soll es sein, die Felder für 'Herkunftsland' und 'Provinz' zwischen den palettes 'title_legend' und 'date_legend' als eigenen 'carpet_legend' einzufügen.
    Doch irgendwie klappt das nicht » Fehler
    User Error: Could not create a data container object
    Die neuen Felder unter 'title_legend' einfügen funktioniert. Somit bräuchte ich Hilfe dahingehend, wie ich eine eigene Palette einfügen kann.

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_news'] = [
        
    'palettes' => [
            
    'default' => '{carpet_legend},carpetSource,carpetProvince;{title_legend},headline,alias,author;{date_legend},date,time;{meta_legend},pageTitle,description,serpPreview;{teaser_legend},subheadline,teaser;{image_legend},addImage;{enclosure_legend:hide},addEnclosure;{source_legend:hide},source;{expert_legend:hide},cssClass,noComments,featured;{publish_legend},published,start,stop'
        
    ],
    ];

     use 
    Contao\CoreBundle\DataContainer\PaletteManipulator;

     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetSource'] = [
        
    'label'     => ['Herkunftsland','Geben Sie das Herkunftsland ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr long''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];
     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetProvince'] = [
        
    'label'     => ['Provinz','Geben Sie die Provinz ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr long''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];

     
    PaletteManipulator::create()
        ->
    addField('carpetSource''carpet_legend'PaletteManipulator::POSITION_APPEND)
        ->
    addField('carpetProvince''carpet_legend'PaletteManipulator::POSITION_APPEND)    
        ->
    applyToPalette('default''tl_news')

    Vielen Dank für die Hilfestellung
    Grüsse
    Bernhard


  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    So wie du das geschrieben hast, hast du das gesamte DCA von tl_news gelöscht . Das musst du entfernen:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_news'] = [
        
    'palettes' => [
            
    'default' => '{carpet_legend},carpetSource,carpetProvince;{title_legend},headline,alias,author;{date_legend},date,time;{meta_legend},pageTitle,description,serpPreview;{teaser_legend},subheadline,teaser;{image_legend},addImage;{enclosure_legend:hide},addEnclosure;{source_legend:hide},source;{expert_legend:hide},cssClass,noComments,featured;{publish_legend},published,start,stop'
        
    ],
    ]; 
    Eine eigene Palette legst du ganz normal so an:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_news']['palettes']['yourPalette'] = '...'
    Aber warum genau brauchst du eine eigene Palette? Wie lässt du die dann darstellen? Ein Nachrichtenbeitrag hat ja keinen allgemeinen Type Selektor - außer du hast das DCA dahingehend verändert.

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

    Support Contao

    Standard

    Der Gedanke dazu ist jener, dass ich für meine hinzugefügten Felder eine eigene "Sektion" habe, welche ein- und ausklappbar ist. Also alonge zu 'Titel und Autor', 'Datum und Uhrzeit' oder 'Metadaten' ....
    Das rein für optische Zwecke und der leichteren Erkennung dieser hinzugefügten Felder.

    Gibt es eine andere Möglickeit? Muss auch nicht unbedingt ein- und ausklappbar sein.
    Grüsse
    Bernhard


  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    Ein- und ausklappbare Sektionen machst du mit einem Fieldset bzw. Legends, nicht mit verschiedenen Paletten. Also mit dem PaletteManipulator zB eine eigene, neue Legend hinzufügen mit addLegend und dann in diese Legend mit addField die eigenen Felder hinzufügen.

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

    Support Contao

    Standard

    OK - soweit mal klar.
    Hier mal meine aktuellen Daten
    PHP-Code:
    <?php

    // contao/dca/tl_news.php

    use Contao\CoreBundle\DataContainer\PaletteManipulator;

     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetSource'] = [
        
    'label'     => ['Herkunftsland','Geben Sie das Herkunftsland ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr w50''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];
     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetProvince'] = [
        
    'label'     => ['Provinz','Geben Sie die Provinz ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr w50''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];
     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetSize'] = [
        
    'label'     => ['Grösse','Geben Sie die Grösse ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr w50''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];
     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetPrice'] = [
        
    'label'     => ['Preis','Geben Sie den Preis ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr w50''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];

     
    PaletteManipulator::create()
        ->
    addLegend('carpet_legend'PaletteManipulator::POSITION_PREPEND)
        ->
    addField('carpetSource''carpet_legend'PaletteManipulator::POSITION_APPEND)
        ->
    addField('carpetProvince''carpet_legend'PaletteManipulator::POSITION_APPEND)    
        ->
    addField('carpetSize''carpet_legend'PaletteManipulator::POSITION_APPEND)
        ->
    addField('carpetPrice''carpet_legend'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_news')
    ;
    Aber: jetzt wird die Sektion ganz unten angeordnet - egal was ich nach 'PaletteManipulator::POSITION_' eingeben - es bleibt unterhalb der Sektion 'Veröffentlichung'.
    Wunsch wäre ja, gleich unterhalb 'Titel und Autor'.
    Wie bekomme ich die korrekte Position hin?


    ach ja, für Mitleser, hier noch die Übersetzung für die Sektion 'carpet_legend'
    PHP-Code:
    <?php 

    // contao/languages/de/tl_news.php

    $GLOBALS['TL_LANG']['tl_news']['carpet_legend'] = 'Teppichdaten';
    Grüsse
    Bernhard


  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    Du hast bei addLegend keine Position angegeben, nach der die Legende eingefügt werden soll.

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

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

    Support Contao

    Standard

    jetzt klappt das ... die Anleitung war gestern noch nicht online vielen DANK dafür und issue #198 könntest du damit schliesen

    der Form halber für Nachleser:
    PHP-Code:
    <?php

    // contao/dca/tl_news.php

    use Contao\CoreBundle\DataContainer\PaletteManipulator;

     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetSource'] = [
        
    'label'     => ['Herkunftsland','Geben Sie das Herkunftsland ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr w50''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];
     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetProvince'] = [
        
    'label'     => ['Provinz','Geben Sie die Provinz ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr w50''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];
     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetSize'] = [
        
    'label'     => ['Grösse','Geben Sie die Grösse ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr w50''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];
     
    $GLOBALS['TL_DCA']['tl_news']['fields']['carpetPrice'] = [
        
    'label'     => ['Preis','Geben Sie den Preis ein'],
        
    'inputType' => 'text',
        
    'eval'      => ['tl_class' => 'clr w50''maxlength' => 255],
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
     ];

     
    PaletteManipulator::create()
        ->
    addLegend('carpet_legend''date_legend' PaletteManipulator::POSITION_BEFORE// section/legend between legend'title and autor' and 'date and time'
        
    ->addField('carpetSource''carpet_legend'PaletteManipulator::POSITION_APPEND)
        ->
    addField('carpetProvince''carpet_legend'PaletteManipulator::POSITION_APPEND)    
        ->
    addField('carpetSize''carpet_legend'PaletteManipulator::POSITION_APPEND)
        ->
    addField('carpetPrice''carpet_legend'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_news')
    ;
    Grüsse
    Bernhard


  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    Ahja, danke

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
  •