Ergebnis 1 bis 11 von 11

Thema: Wie man einem Data Container Array eigene Felder hinzufügt

  1. #1
    Contao-Nutzer
    Registriert seit
    20.10.2009.
    Beiträge
    3

    Standard Wie man einem Data Container Array eigene Felder hinzufügt

    Hallo,

    folgende Schritte habe ich dem Tutorial https://contao.org/eigene-felder-hinzufuegen.html entnommen. Es geht darum die Seitenstruktur um ein Feld zu erweitern.

    1. Schritt - Datenbank erweitern

    Datei anlegen unter system/modules/x_mynavigation/config/database.sql mit folgendem Inhalt:

    Code:
    CREATE TABLE `tl_page` (
      `childRootNode` char(1) NOT NULL default ''
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Dem Ordner x_mynavigation wurde übrigens ein x vorangestellt, damit TL das zum Schluß der Modul-Initalisierung ausführt (die Module werden alphabetisch geladen).

    2. Schritt - DCA-Konfiguration erweitern

    Datei anlegen unter system/modules/x_mynavigation/dca/tl_page.php. Die Standardpalette (default) ist folgendermaßen in der orginal tl_page.php deklariert:

    Code:
    '{title_legend},title,alias,type;followup,start,stop'
    Somit habe ich wie im Tutorial empfohlen mit str_replace gearbeitet, um die Palette zu erweitern:

    Code:
    // Anpassung der Palette
    $GLOBALS['TL_DCA']['tl_page']['palettes']['default']=str_replace('type', 'type,childRootNode', $GLOBALS['TL_DCA']['tl_page']['palettes']['default']);
    // Hinzufügen der Feld-Konfiguration
    $GLOBALS['TL_DCA']['tl_page']['fields']['childRootNode'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_page']['childRootNode'],
        'exclude'   => true,
        'default'   => 0,
        'inputType' => 'checkbox'
    );
    3. Schritt - Übersetzung hinzufügen

    Datei anlegen unter system/modules/x_mynavigation/languages/de/tl_page.php mit folgendem Inhalt:

    Code:
    // Sprache deutsch
    $GLOBALS['TL_LANG']['tl_page']['childRootNode']=array(
      'Unter-Wurzelknoten',
      'Handelt es sich bei diesem Knoten um einen Unter-Wurzelknoten (Teilbereich A, B, ...)?'
    );
    4. Schritt - Installation

    Installationstool starten und auf Datenbank aktualisieren klicken.

    Und nun zu meiner Frage: Warum wird das neu angelegte Feld nicht in der Seitenstruktur angezeigt? Das Installationstool hat die Änderung erkannt und korrekt in der DB angelegt. Die obigen Dateien werden auch durchlaufen... Ich arbeite mit Typolight 2.8.3.
    Geändert von tobias.seckinger (05.05.2010 um 17:20 Uhr)

  2. #2
    Contao-Fan Avatar von JanoschSkuplik
    Registriert seit
    13.08.2009.
    Ort
    Raesfeld
    Beiträge
    536
    Partner-ID
    6909
    User beschenken
    Wunschliste

    Standard

    Hallo Tobias,

    wenn du dir die Paletten in der tl_page.php noch einmal genau anguckst, sieht du, dass sie folgendermaßen aufgebaut sind:

    PHP-Code:
        'palettes' => array
        (
            
    '__selector__'                => array('type', ...usw...),
            
    'default'                     => '{title_legend},title,alias,type;followup,start,stop',
            
    'regular'                     => '{title_legend},title,alias,type;...usw...',
            
    'forward'                     => '{title_legend},title,alias,type;...usw...',
            ...
    usw...  
       ) 
    d.h. das Feld "type" ist auch ein Selektor. Und da du dir wahrscheinlich einen "type" auswählen wirst, bleibt deine "default"-Palette nicht.

    Deshalb musst du IMO auch die anderen Paletten "regular", "forward", etc. mit str_replace behandeln.

    Ich hoffe, dass dies nun auf die Schnelle richtig ist.

    Gruß Janosch

  3. #3
    Contao-Nutzer
    Registriert seit
    20.10.2009.
    Beiträge
    3

    Standard

    Hallo Janosch,

    vielen Dank! Damit funktioniert das wunderbar :-)

  4. #4
    Contao-Nutzer
    Registriert seit
    28.05.2011.
    Beiträge
    169

    Standard

    Hallo,

    ich habe das Beispiel nachgearbeitet und es funktioniert soweit.
    Wie kann ich jetzt in meinem Template auf die Variable zugreifen.

    $this->childRootNode

    Geht leider nicht.

  5. #5
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Müsste aber gehen. Allerdings nur im "nav_default"-Template. Man kann natürlich nur auf Template-Variabeln zugreifen, die einem auch zur Verfügung stehen
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  6. #6
    Contao-Nutzer
    Registriert seit
    28.05.2011.
    Beiträge
    169

    Standard

    Hi Toflar,

    danke für Deine Antwort. Kannst Du mir einen Typ geben, wie ich diese Variable ins Haupttemplate bekomme?

    Grüße Marco

  7. #7
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Ins "fe_page"?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  8. #8
    Contao-Nutzer
    Registriert seit
    28.05.2011.
    Beiträge
    169

    Standard

    Ja, genau.

  9. #9
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Versuchs mal ganz einfach mit folgendem Code im Template:
    PHP-Code:
    global $objPage;
    var_dump($objPage->childRootNode); 
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  10. #10
    Contao-Nutzer
    Registriert seit
    28.05.2011.
    Beiträge
    169

    Standard

    Hi Toflar,

    recht herzlichen Dank. Das ist genau das was ich gesucht habe.
    Jetzt geht es.

    Grüße Marco

  11. #11
    Contao-Nutzer Avatar von pgrob
    Registriert seit
    10.07.2009.
    Ort
    Schweiz
    Beiträge
    205
    Partner-ID
    10267

    Standard

    Hallo Tobias

    Ich versuche gerade nach deiner Anleitung ebenfalls ein Feld in der Seitenstruktur zu erstellen, scheitere aber irgendwie beim aufbau der tl_page.php.
    Kannst du mir hier ein wenig Starthilfe geben? Wäre Super.

    Gruess Patrick

    EDIT: Habe es nach dieser Anleitung geschafft.

    Link
    Geändert von pgrob (03.11.2014 um 21:49 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Eigene TinyMCE Konfiguration der Teaser-Felder
    Von Webstylerin im Forum Allgemeine Inhaltselemente
    Antworten: 1
    Letzter Beitrag: 17.08.2010, 07:41
  2. Jedem Listeneintrag in einem Artikel eigene Klasse zuweisen.
    Von zinky im Forum Allgemeine Inhaltselemente
    Antworten: 0
    Letzter Beitrag: 12.06.2010, 17:00
  3. Felder im BE mit einem Wert aus DB vorbelegen.
    Von Jürgen im Forum Sonstiges zu Contao
    Antworten: 0
    Letzter Beitrag: 13.10.2009, 08:20
  4. Fatal error: Could not create a data container
    Von stefan-at-work im Forum Sonstiges zu Contao
    Antworten: 13
    Letzter Beitrag: 11.09.2009, 19:44

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •