Ergebnis 1 bis 5 von 5

Thema: Modul-Entwicklung: Felder im Backend werden nicht angezeigt

  1. #1
    Contao-Fan
    Registriert seit
    21.08.2012.
    Beiträge
    280
    User beschenken
    Wunschliste

    Standard Modul-Entwicklung: Felder im Backend werden nicht angezeigt

    Hallo Community,


    ich bin gerade dabei, mich in die Entwicklung von contao-Extensions reinzuarbeiten und stehe grad mächtig auf dem Schlauch. Ich schreibe ein kleines Modul zur Darstellung von Youtube-Videos. Das Modul soll über Themes -> Module verwaltbar sein und dann per Inhaltselement innerhalb eines Artikels im Frontend angezeigt werden.

    Problem: Die Felder für die Konfiguration des Moduls werden im Backend nicht angezeigt. Ich bekomme nur Titel und Modultyp angezeigt, die auch funktionieren. Das Systemlog zeigt keine Fehler an.
    Hier mal ein Bild: mod_youtube_problem.jpg

    Ich habe bereits in unterschiedlichen Quellen nach Anregungen zur Behebung meines Problems gesucht, bin aber leider der Lösung keinen Schritt näher. Entwickler-Handbuch, andere Module und dieses wunderbare Tut. Erfolglos

    Folgende Dateistruktur existiert:
    config/
    config.php
    database.sql
    dca/
    tl_youtube.php
    languages/
    de/
    default.php
    modules.php
    tl_youtube.php
    en/
    default.php
    modules.php
    tl_youtube.php
    templates/
    mod_youtube.html5
    mod_youtube.xhtml
    ModuleYoutube.php

    Folgende Auflist zeigt den Quellcode der Dateien:

    database.sql:
    Code:
    CREATE TABLE `tl_youtube` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `tstamp` int(10) unsigned NOT NULL default '0',
      `yt_id` varchar(20) NOT NULL default '',
      `yt_autohide` tinyint(1) unsigned NOT NULL default '2',
      `yt_autoplay` tinyint(1) unsigned NOT NULL default '0',
      `yt_color` varchar(5) NOT NULL default 'red',
      `yt_controls` tinyint(1) unsigned NOT NULL default '1',
      `yt_loop` tinyint(1) unsigned NOT NULL default '0',
      `yt_modestbranding` tinyint(1) unsigned NOT NULL default '0',
      `yt_rel` tinyint(1) unsigned NOT NULL default '1',
      `yt_showinfo` tinyint(1) unsigned NOT NULL default '1',
      `yt_theme` varchar(5) NOT NULL default 'dark',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Anmerkung: Die Tabelle wird korrekt angelegt

    config.php
    PHP-Code:
     $GLOBALS['FE_MOD']['miscellaneous']['youtube'] = 'ModuleYoutube'
    dca/tl_youtube.php
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_youtube'] = array
    (

      
    'config' => array
      (
        
    // dca config settings go here
        
    'dataContainer'               => 'Table',
        
    'enableVersioning'            => true
      
    ),

      
    'list' => array
      (
        
    // all settings that are applied to records listing
        // we can define here: sorting, panel layout (filter, search, limit fields), label format, global operations, operations on each record
      
    ),

      
    'palettes' => array
      (
        
    // palettes settings
        
    '__selector__'                => array(),
        
    'default'                     => '{yt_video_legend},yt_id'
        
    //'default'                     => '{title_legend},name,headline,type;{yt_video_legend},yt_id;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space'
      
    ),

      
    'fields' => array
      (
        
    // fields that are visible in back end form
        
    'yt_id' => array
        (
          
    'label'                   => &$GLOBALS['TL_LANG']['tl_youtube']['yt_id'],
          
    'inputType'               => 'text',
          
    'search'                  => true,
          
    'eval'                    => array('mandatory'=>true'maxlength'=>15'rgxp' => 'alnum')
        )
      )
    ); 
    languages/de/tl_youtube.php
    PHP-Code:
    /**
     * Fields
     */
    $GLOBALS['TL_LANG']['tl_youtube']['yt_id'] = array('Video-ID''Die ID des Youtube-Videos');


    /**
     * Legends
     */
    $GLOBALS['TL_LANG']['tl_youtube']['yt_video_legend'] = 'Video-Daten'
    ModuleYoutube.php
    PHP-Code:
    class ModuleYoutube extends Module
    {

        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'mod_youtube';

        
    /**
         * Generate module
         */
        
    protected function compile()
        {
            
        }

    Nun meine Frage: was mache ich falsch? Der Fehler kann ja (eigentlich) nur in der DCA-Konfiguration liegen. Ich hoffe, ihr könnt mir helfen.
    Vielen Dank im Voraus schon mal dafür.


    Viele Grüße
    MacGyver

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Schau dir nochmal die dca von einem Contao Frontend-Modul ab. Nicht dca/tl_youtube.php, sondern eher dca/tl_module.php. Und darin dann
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_module']['palettes']['youtube'] = '...';
    //...

    // Fields
    $GLOBALS['TL_DCA']['tl_module']['fields']['yt_id'] = '...';
    //... 
    Willst du die Erweiterung tatsächlich 'youtube' nennen?

    Ich würde für diesen Zweck eher ein Inhaltselement anlegen anstatt eines FE-Moduls. Module sind ja eigentlich mehr dafür da, dass man sie seitenweit einsetzt, Inhaltselemente, dass man hier und da mal ein Video einfügen kann.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Fan
    Registriert seit
    21.08.2012.
    Beiträge
    280
    User beschenken
    Wunschliste

    Standard

    Servus,


    vielen Dank für deine Antwort.

    ich möchte dem Nutzer die Möglichkeit geben, ein Video tatsächlich seitenweit einzubinden. Die Erstellung eines Content Elements ist in der Tat auch geplant, um größere Flexibilität zu erreichen. Den Namen des Moduls habe ich erst mal so gewählt, werde ihn aber durchaus vor Release anpassen.

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_module']['palettes']['youtube'] = '...'
    //... 

    // Fields 
    $GLOBALS['TL_DCA']['tl_module']['fields']['yt_id'] = '...'
    //... 
    Wenn ich diesen Schlüssel (tl_module) nutze, dann muss in meiner database.sql doch auch der Tabellenname tl_module heißen und die Spalten der Tabelle hinzugefügt werden. Ich wollte gern die Daten für die Video-Einstellungen in einer eigenen Tabelle speichern und nicht auf die tl_module zugreifen. Oder geht das tatsächlich nur, wenn man zusätzlich noch ein Backend-Modul anlegt?

    Viele Grüße

  4. #4
    Contao-Fan Avatar von Bandyt
    Registriert seit
    22.04.2010.
    Ort
    Bremen
    Beiträge
    808

    Standard

    Zitat Zitat von MacGyer Beitrag anzeigen
    Wenn ich diesen Schlüssel (tl_module) nutze, dann muss in meiner database.sql doch auch der Tabellenname tl_module heißen und die Spalten der Tabelle hinzugefügt werden. Ich wollte gern die Daten für die Video-Einstellungen in einer eigenen Tabelle speichern und nicht auf die tl_module zugreifen. Oder geht das tatsächlich nur, wenn man zusätzlich noch ein Backend-Modul anlegt?

    Viele Grüße
    Das kannst du auch gerne machen, aber wenn du im Modul Einstellungen erlauben möchtest (z.b welches Video abgespielt werden soll), musst du die Felder im tl_module hinzufügen.
    Meine Erweiterungen: League Manager | Forum

  5. #5
    Contao-Fan
    Registriert seit
    21.08.2012.
    Beiträge
    280
    User beschenken
    Wunschliste

    Standard

    Hallo ihr beiden,


    vielen Dank für eure Antworten. Das hilft mir erst mal weiter.

    Viele Grüße

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
  •