Ergebnis 1 bis 12 von 12

Thema: FAQ (Contao-Core-Modul) um ein Feld erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    27.07.2017.
    Beiträge
    168

    Frage FAQ (Contao-Core-Modul) um ein Feld erweitern

    Hallo zusammen,

    ich würde gerne die Eingabemaske für die FAQ's um ein Feld erweitern (siehe: feld.PNG ), komme aber irgendwie nicht weiter.

    Ich habe bereits in die Datei \system\modules\faq\dca\tl_faq.php um das Feld "area" erweitert:

    PHP-Code:
        // Palettes
        
    'palettes' => array
        (
            
    '__selector__'                => array('addImage''addEnclosure'),
            
    'default'                     => '{title_legend},question,area,alias,author;{answer_legend},answer;{image_legend},addImage;{enclosure_legend:hide},addEnclosure;{expert_legend:hide},noComments;{publish_legend},published'
        
    ),

        
    // Subpalettes
        
    'subpalettes' => array
        (
            
    'addImage'                    => 'singleSRC,alt,size,imagemargin,imageUrl,fullsize,caption,floating',
            
    'addEnclosure'                => 'enclosure'
        
    ),

        
    // Fields
        
    'fields' => array
        (
            
    'id' => array
            (
                
    'sql'                     => "int(10) unsigned NOT NULL auto_increment"
            
    ),
            
    'pid' => array
            (
                
    'foreignKey'              => 'tl_faq_category.title',
                
    'sql'                     => "int(10) unsigned NOT NULL default '0'",
                
    'relation'                => array('type'=>'belongsTo''load'=>'eager')
            ),
            
    'sorting' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['MSC']['sorting'],
                
    'sorting'                 => true,
                
    'flag'                    => 11,
                
    'sql'                     => "int(10) unsigned NOT NULL default '0'"
            
    ),
            
    'tstamp' => array
            (
                
    'sql'                     => "int(10) unsigned NOT NULL default '0'"
            
    ),
            
    'question' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_faq']['question'],
                
    'exclude'                 => true,
                
    'search'                  => true,
                
    'sorting'                 => true,
                
    'flag'                    => 1,
                
    'inputType'               => 'text',
                
    'eval'                    => array('mandatory'=>true'maxlength'=>255),
                
    'sql'                     => "varchar(255) NOT NULL default ''"
            
    ),
            
    'area' => array (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_faq']['area'],
                
    'exclude'                 => true,
                
    'search'                  => true,
                
    'inputType'               => 'text',
                
    'eval'                    => array('mandatory'=>true'maxlength'=>255),
                
    'sql'                     => "varchar(255) NOT NULL default ''"
            
    ),

    ... 
    Eine Übersetzung dafür habe ich auch in der \system\modules\faq\languages\de\tl_faq.xlf hinzugefügt:

    HTML-Code:
    <?xml version="1.0" ?><xliff version="1.1">
      <file datatype="php" original="system/modules/faq/languages/en/tl_faq.php" source-language="en" target-language="de">
        <body>
          <trans-unit id="tl_faq.question.0">
            <source>Question</source>
            <target>Frage</target>
          </trans-unit>
          <trans-unit id="tl_faq.question.1">
            <source>Please enter the question.</source>
            <target>Bitte geben Sie die Frage ein.</target>
          </trans-unit>
          <trans-unit id="tl_faq.area.0">
            <source>Area</source>
            <target>Bereich</target>
          </trans-unit>
          <trans-unit id="tl_faq.area.1">
            <source>Please enter the area.</source>
            <target>Bitte geben Sie den Bereich ein.</target>
          </trans-unit>
    ...
    Die Datenbank habe ich auch erfolgreich um das oben genannten Feld aktualisiert, jedoch ist es in der Eingabemaske nicht sichtbar.

    Was habe ich vergessen bzw. was mache ich falsch?

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

    Standard

    Du solltest das nicht in den Originaldateien machen, sondern in einer eigenen Extension. Oder zumindest über die dcaconfig.php

  3. #3
    Contao-Nutzer
    Registriert seit
    27.07.2017.
    Beiträge
    168

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du solltest das nicht in den Originaldateien machen, sondern in einer eigenen Extension. Oder zumindest über die dcaconfig.php
    Das mit der Updatesicherheit war mir bekannt. Wie muss ich darin denn vorgehen?

  4. #4
    Contao-Nutzer
    Registriert seit
    27.07.2017.
    Beiträge
    168

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du solltest das nicht in den Originaldateien machen, sondern in einer eigenen Extension. Oder zumindest über die dcaconfig.php
    Ich bin jetzt folgendermaßen vorgegangen:

    1) Eigenes Modul unter system/modules mit den Namen faq_aos angelegt
    2) Darin einen Ordnet mit den Namen dca und darin eine Datei mit dem Namen tl_faq.php angelegt. Dort habe ich dann die Palettes erweitert und das neue Feld hinzugefügt.

    Inhalt tl_faq.php:

    PHP-Code:
    <?php    
        $GLOBALS
    ['TL_DCA']['tl_faq'] = array
        (

            
    // Palettes
            
    'palettes' => array
            (
                
    '__selector__'                => array('addImage''addEnclosure'),
                
    'default'                     => '{title_legend},question,area,alias,author;{answer_legend},answer;{image_legend},addImage;{enclosure_legend:hide},addEnclosure;{expert_legend:hide},noComments;{publish_legend},published'
            
    ),

            
    'question' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_faq']['area'],
                
    'exclude'                 => true,
                
    'inputType'               => 'text',
                
    'eval'                    => array('mandatory'=>true'maxlength'=>255),
                
    'sql'                     => "varchar(255) NOT NULL  ''"
            
    ),


        )
    ?>
    3) Zusätzlich habe ich im Ordner languages die Datei tl_faq.php angelegt, um die Übersetzungen einzupflegen

    Inhalt tl_faq.php:

    PHP-Code:
    <?php

        $GLOBALS
    ['TL_LANG']['tl_faq']['area'] = array
        (
            
    'Bereich',
            
    'Bitte geben Sie den Bereich an, zu der die Frage zugeordnet werden soll.'
        
    );

    ?>
    3) Datenbank im Bereich Erweiterungsverwaltung aktualisiert.

    Möchte ich jetzt in eine Kategorie klicken, um darin weitere Fragen anlegen zu können, erhalte ich folgende Fehlermeldung:

    Fatal error: Could not create a data container object in system\modules\core\classes\Backend.php on line 402
    #0 [internal function]: __error(256, 'Could not creat...', 'C:\\xampp_php5.6...', 402, Array)
    #1 system\modules\core\classes\Backend.php(402): trigger_error('Could not creat...', 256)
    #2 system\modules\core\controllers\BackendMain.php(13 1): Contao\Backend->getBackendModule('faq')
    #3 contao\main.php(20): Contao\BackendMain->run()
    #4 {main}
    Kann im Moment nichts damit anfange. Kannst du mir da weiterhelfen?

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

    Standard

    Zitat Zitat von Codehan Beitrag anzeigen
    Inhalt tl_faq.php:

    PHP-Code:
    <?php    
        $GLOBALS
    ['TL_DCA']['tl_faq'] = array
        (

            
    // Palettes
            
    'palettes' => array
            (
                
    '__selector__'                => array('addImage''addEnclosure'),
                
    'default'                     => '{title_legend},question,area,alias,author;{answer_legend},answer;{image_legend},addImage;{enclosure_legend:hide},addEnclosure;{expert_legend:hide},noComments;{publish_legend},published'
            
    ),

            
    'question' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_faq']['area'],
                
    'exclude'                 => true,
                
    'inputType'               => 'text',
                
    'eval'                    => array('mandatory'=>true'maxlength'=>255),
                
    'sql'                     => "varchar(255) NOT NULL  ''"
            
    ),


        )
    ?>
    Das darfst du nicht so machen, dadurch hast du nun das gesamte DCA von tl_faq gelöscht. Ein neues Feld fügst du zB so ein:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_faq']['fields']['question'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_faq']['area'],
        
    'exclude'                 => true,
        
    'inputType'               => 'text',
        
    'eval'                    => array('mandatory'=>true'maxlength'=>255),
        
    'sql'                     => "varchar(255) NOT NULL  ''"
    ); 
    Die Palette musst du zB mit str_replace erweitern.

  6. #6
    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

    Hier
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_faq']['fields']['question'] = array 
    muss natürlich auch der Name deines neuen Feldes stehen
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_faq']['fields']['area'] = array 
    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

  7. #7
    Contao-Nutzer Avatar von DatGruen
    Registriert seit
    20.06.2009.
    Beiträge
    59

    Standard

    Ich stehe auch vor dem Problem das ich gerne das FAQ Modul erweitern möchte, also habe ich mir die Doku angeschaut Eigene Felder hinzufügen.
    Ich habe unter system/modules/test_faq die beschrieben Ordner und Dateien angelegt.



    Über den Contao Manager -> Systemwartung -> Cache neu erstellen -> Installtool erweitert das Tool auch die Datenbank.

    installtool.jpg

    Mein Code in der tl_faq.php sieht so aus.

    PHP-Code:
    // Anpassung der Palette
    $GLOBALS['TL_DCA']['tl_faq']['palettes']['default'] = str_replace
    (
        
    'company',
        
    'customer_number,company',
        
    $GLOBALS['TL_DCA']['tl_faq']['palettes']['default']
    );

    // Hinzufügen der Feld-Konfiguration
    $GLOBALS['TL_DCA']['tl_faq']['fields']['customer_number'] = array
    (
        
    'label'     => &$GLOBALS['TL_LANG']['tl_faq']['customer_number'],
        
    'exclude'   => true,
        
    'inputType' => 'text',
        
    'eval'      => array('mandatory'=>true'rgxp'=>'digit''maxlength'=>8),
        
    'sql'       => "varchar(8) NOT NULL default ''"
    );


    $GLOBALS['TL_DCA']['tl_faq']['fields']['area'] = array 

        
    'label'                   => &$GLOBALS['TL_LANG']['tl_faq']['area'], 
        
    'exclude'                 => true
        
    'inputType'               => 'text'
        
    'eval'                    => array('mandatory'=>true'maxlength'=>255), 
        
    'sql'                     => "varchar(255) NOT NULL  ''" 
    ); 
    Also nichts weiter wie die Codeschnippsel aus der Doku und Spooky Lösungsvorschlag.

    Wenn ich jetzt eine neue Frage in den FAQ erstelle wird im BE leider nichts angezeigt.

    FAQ_BE.jpg

    Installiert ist Contao 4.5

  8. #8
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    Ich konnte in deiner palettes das neue Feld nicht finden.
    Grüße
    Alex

  9. #9
    Contao-Nutzer Avatar von DatGruen
    Registriert seit
    20.06.2009.
    Beiträge
    59

    Standard

    Du hast recht Alex, das war der Fehler

  10. #10
    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

    Halte dich mit der Schreibweise der Feldnamen am besten auch an Contao, also camelCase - customerNumber. Irgendwie war da mal was, wo einfach die Schreibweise ungültig war.
    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

  11. #11
    Contao-Nutzer Avatar von DatGruen
    Registriert seit
    20.06.2009.
    Beiträge
    59

    Standard

    Hi Andreas da gebe ich Dir absolut recht, der Faulheit geschuldet hatte ich den Code aus dem Manuel kopiert https://docs.contao.org/books/manual...nzufuegen.html

    Die vorgeschlagene Schreibweise ließt sich auch viel besser. Fummel mich grade in das Thema rein, spannend aber nicht immer so einfach im ersten Anlauf.

  12. #12
    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

    Ah, ok. Ich ändere die Seite mal, auch wenn der Unterstrich wahrscheinlich keinen Fehler produziert, aus Gründen der Konsistenz.
    Geändert von Andreas (04.01.2018 um 14:07 Uhr)
    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

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
  •