Contao-Camp 2024
Ergebnis 1 bis 31 von 31

Thema: Mitgliederdaten um Felder erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    18.06.2017.
    Beiträge
    219

    Standard Mitgliederdaten um Felder erweitern

    Hallo Zusammen,

    ich erstelle gerade für einen Verein die Homepage neu. Unter anderem möchte ich die Mitglieder im Backend anlegen damit diese

    a) Auf einer Mitgliederliste erscheinen
    b) Auf einer internen EMail-Liste aufgeführt werden.

    So weit so einfach.

    Aber jetzt sollen in einem ersten Schritt noch zusätzliche Daten zu den Mitgliedern erfasst werden. Wenn ich es richtig verstehe lautet hier das Zauberwort DCA. Kann ich darüber auch ein Dropdownfeld zum jeweiligen Mitglied hinzufügen und dieses in Abhängigkeit des ausgewählen Geschlechts dynamisch befüllen?

    Langfristig wäre auch eine Verwaltung von persönlicher Ausrüstung schön. Hier böte sich sicherlich MM an. Wobei dieses mit 4.9 aber leider (noch) nicht zusammen läuft (Spende ist keine option). Da bliebe dann nur der Weg über eine eigene Erweiterung? Oder kann ich das auch per DCA machen.


    Ich versuche mich hier gerade noch etwas zu orientieren, wie ich am besten an das Problem heran gehe.


    Danke und Gruß

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

    Standard

    Wie du das DCA anpasst, ist hier (und fortführend) beschrieben: https://docs.contao.org/dev/getting-started/dca/

  3. #3
    Contao-Nutzer
    Registriert seit
    08.05.2014.
    Ort
    Switzerland
    Beiträge
    10

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wie du das DCA anpasst, ist hier (und fortführend) beschrieben: https://docs.contao.org/dev/getting-started/dca/
    Die Anleitung bezieht sich wahrscheinlich auf Contao 4.4.x. Wie erweitert man Felder in Contao 4.10.x, der angegebene Pfad existiert nicht?
    (Any DCA adjustments go into the contao/dca/ folder.).

  4. #4
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Zitat Zitat von ngcat Beitrag anzeigen
    der angegebene Pfad existiert nicht?
    Du musst den/die Ordner selbst anlegen.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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

  6. #6
    Contao-Nutzer
    Registriert seit
    08.05.2014.
    Ort
    Switzerland
    Beiträge
    10

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Du musst den/die Ordner selbst anlegen.
    Danke, aber das scheint bei mir nicht zu gehen. Ich folge genau dem Beispiel der Anleitung um dies zu testen.

    - Im root Ordner, also nicht dem /web Ordner, erstelle ich Ordner contao/dca/tl_news.php mit dem geposteten Inhalt.
    - Dann leere ich den Cache und editiere oder erstelle eine neue Nachricht. Das Feld "Location" erscheint nicht.

  7. #7
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Und was steht in Deiner tl_news.php drin?

    mit dem geposteten Inhalt
    Wo gepostet?
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  8. #8
    Contao-Nutzer
    Registriert seit
    08.05.2014.
    Ort
    Switzerland
    Beiträge
    10

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Und was steht in Deiner tl_news.php drin?


    Wo gepostet?
    Right here: https://docs.contao.org/dev/getting-started/dca/

  9. #9
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.681
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von ngcat Beitrag anzeigen
    Danke, aber das scheint bei mir nicht zu gehen. Ich folge genau dem Beispiel der Anleitung um dies zu testen.

    - Im root Ordner, also nicht dem /web Ordner, erstelle ich Ordner contao/dca/tl_news.php mit dem geposteten Inhalt.
    - Dann leere ich den Cache und editiere oder erstelle eine neue Nachricht. Das Feld "Location" erscheint nicht.
    - DB updaten über Install-Tool oder Konsole migration (Das neue Feld muss auch in die DB)
    - editiere oder erstelle eine neue Nachricht

  10. #10
    Contao-Nutzer
    Registriert seit
    08.05.2014.
    Ort
    Switzerland
    Beiträge
    10

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    - DB updaten über Install-Tool oder Konsole migration (Das neue Feld muss auch in die DB)
    - editiere oder erstelle eine neue Nachricht
    Das habe ich schon versucht, danke.
    Contao sagt mir, The database is up to date.
    Entsprechend kann ich auch kein update durchführen.
    Das neue Feld ist jedoch noch nicht in der Tabelle tl_news.

  11. #11
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.681
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von ngcat Beitrag anzeigen
    Contao sagt mir, The database is up to date.
    wenn das so ist, "sieht" Contao die Änderungen noch nicht

    hmm??

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

    Standard

    Poste den exakten Inhalt deiner contao/dca/tl_news.php

  13. #13
    Contao-Nutzer
    Registriert seit
    08.05.2014.
    Ort
    Switzerland
    Beiträge
    10

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Poste den exakten Inhalt deiner contao/dca/tl_news.php
    Ich habe einfach den Beispielinhalt eingefügt:
    PHP-Code:
    // contao/dca/tl_news.php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    $GLOBALS['TL_DCA']['tl_news']['fields']['location'] = [
        
    'label' => ['Location''Location of the news entry, if applicable.'],
        
    'inputType' => 'text',
        
    'eval' => ['tl_class' => 'w50''maxlength' => 255],
        
    'sql' => ['type' => 'string''length' => 255'default' => ''],
    ];

    PaletteManipulator::create()
        ->
    addField('location''title_legend'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_news')

    Dies mache ich in einer neuen Contao 4.10.5 installation.

  14. #14
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Und Du hast auch das "öffnende" <?php in Deiner Datei?

    Das ist (glaube ich) bei keinem der Codebeispiele aus der Doku enthalten, da es teilweise nur Fragmente sind.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  15. #15
    Contao-Nutzer
    Registriert seit
    08.05.2014.
    Ort
    Switzerland
    Beiträge
    10

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Und Du hast auch das "öffnende" <?php in Deiner Datei?

    Das ist (glaube ich) bei keinem der Codebeispiele aus der Doku enthalten, da es teilweise nur Fragmente sind.
    Yup, habe ich:
    PHP-Code:
    <?php
    // contao/dca/tl_news.php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    $GLOBALS['TL_DCA']['tl_news']['fields']['location'] = [
        
    'label' => ['Location''Location of the news entry, if applicable.'],
        
    'inputType' => 'text',
        
    'eval' => ['tl_class' => 'w50''maxlength' => 255],
        
    'sql' => ['type' => 'string''length' => 255'default' => ''],
    ];

    PaletteManipulator::create()
        ->
    addField('location''title_legend'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_news')
    ;
    ?>

  16. #16
    Contao-Nutzer
    Registriert seit
    08.05.2014.
    Ort
    Switzerland
    Beiträge
    10

    Standard

    Now we're getting somewhere!

    Ich habe im Contao Manager die Packages geupdated. Zwar waren keine Updates verfügbar aber die neue Datei wurde eingelesen und das Datenbank update wurde vorgeschlagen.
    Es wurde das korrekte Feld eingefügt und ist nun im Backend eingepflegt.

    Danke für eure Hilfe, jetzt geht das tüfteln erst richtig los für die tatsächlichen Felder die ich für Mitglieder brauche.

  17. #17
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Du solltest das schließende ?> entfernen. Es ist nicht nötig und dahinter können sich leicht Leerzeichen (u.Ä) einschleichen (die dann Output erzeugen würden).
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  18. #18
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.681
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von ngcat Beitrag anzeigen
    Now we're getting somewhere!

    Ich habe im Contao Manager die Packages geupdated.
    ich stoße bei solchen Sachen auf Konsole ein "composer install" an - da ist man auf der sicheren Seite und in Summe auch nicht langsamer als erst im CM einlogen, check abwarten und starten...

  19. #19
    Contao-Nutzer
    Registriert seit
    13.03.2010.
    Beiträge
    227

    Standard

    Hallo zusammen,

    ich möchte das Thema nochmal aufgreifen, weil meine Sprachdateien nicht übernommen werden. Ich bin von Contao 4.4 auf 4.9 gegangen, habe app/Resources/contao/dca bzw. /languages/de durch contao/dca bzw. /languages/de ersetzt. Im dca-Ordner und im languages/de-Ordner liegen jeweils eine tl_member.php. Ich hatte damals zwei zusätzliche Felder (title, description) und ein zusätzliches Bild (avatar) erstellt, die auch im Backend auftauchen, aber jetzt nicht mehr mit der Übersetzung. Sieht jemand, warum?

    In der DCA steht:

    PHP-Code:
    <?php
    // add additional fields
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace 
        

            
    'lastname'
            
    'lastname,title'
            
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'
        );

    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace 
        

            
    'country'
            
    'country,description'
            
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'
        );

    $GLOBALS['TL_DCA']['tl_member']['fields']['title'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_member']['title'],
        
    'search'                  => true,
        
    'inputType'               => 'text',
        
    'eval'                    => array('allowHtml'=>true'maxlength'=>100'feEditable' => true'feViewable'=>true'feGroup'=>'personal''tl_class'=>'w50''configure' => true),
        
    'sql'                     => "varchar(100) NOT NULL default ''"
    );

    $GLOBALS['TL_DCA']['tl_member']['fields']['description'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_member']['description'],
        
    'search'                  => true,
        
    'inputType'               => 'textarea',
        
    'eval'                    => array('allowHtml'=>true'rte' => 'tinyMCE''cols' => 60'style'=>'height:150px;width:100%;''feEditable' => true'feViewable'=>true'feGroup'=>'personal''tl_class'=>'clr''configure' => true),
        
    'sql'                     => "text NULL"
    );

    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
    (
      
    'language;',
      
    'language,avatar;',
      
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default']
    );

    $GLOBALS['TL_DCA']['tl_member']['fields']['avatar'] = array
    (
      
    'label'     => &$GLOBALS['TL_LANG']['tl_member']['avatar'],
      
    'exclude'   => true,
      
    'inputType' => 'fileTree',
      
    'eval'      => array(
        
    'feEditable'    =>true,
        
    'feViewable'    =>true,
        
    'files'     =>true,
        
    'filesOnly'    =>true,
        
    'tl_class'    =>'w50 m12',
        
    'fieldType'     =>'checkbox',
        
    'extensions' => 'jpg,png,jpeg',
        
    'feGroup'       =>'contact'),
      
    'sql'      => "binary(16) NULL"
    );
    In der Languages steht:

    PHP-Code:
    <?php
    $GLOBALS
    ['TL_LANG']['tl_member']['title'] = array
    (
        
    'Titel',
        
    'Bitte geben Sie den Titel ein.'
    );
    $GLOBALS['TL_LANG']['tl_member']['description'] = array
    (
        
    'Beschreibung',
        
    'Bitte geben Sie eine Beschreibung ein.'
    );
    $GLOBALS['TL_LANG']['tl_member']['avatar'] = array
    (
        
    'Avatar',
        
    'Bitte laden Sie ein Foto hoch.'
    );
    Bei Update der Datenbank bleibt folgende Tabellenzeile unverändert stehen/ lässt sich nicht updaten (siehe Anhang).
    Bildschirmfoto 2022-07-26 um 12.24.28.png

    Freue mich über Tipps
    Marion

  20. #20
    Contao-Nutzer
    Registriert seit
    13.03.2010.
    Beiträge
    227

    Standard

    Habe jetzt mal ein weiteres Feld drangehängt, aber mit der Schreibkonvention wie hier erklärt: https://docs.contao.org/dev/getting-started/dca/. Dieses Feld taucht nach Erneuern des Produktions-Caches auf, ebenso wie meine alten Felder nun übersetzt sind.

    Weiß jemand, ob ich einfach die Schreibkonvention in der DCA ändern könnte (mit exakt der gleichen Bezeichnung), ohne die alten Felder zu verlieren?

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

    Standard

    Was genau meinst du mit "Schreibkonvention"?
    » sponsor me via GitHub or PayPal or Revolut

  22. #22
    Contao-Nutzer
    Registriert seit
    13.03.2010.
    Beiträge
    227

    Standard

    Den schönen kompakten Code statt mein str_replace usw.

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

    Standard

    Das str_replace solltest du auf jeden Fall vermeiden - denn das wird nicht immer funktionieren. Du solltest den PaletteManipulator nutzen.
    » sponsor me via GitHub or PayPal or Revolut

  24. #24
    Contao-Nutzer
    Registriert seit
    13.03.2010.
    Beiträge
    227

    Standard

    Ok, Spooky, danke! Und werden dann meine alten Einträge verloren gehen, was meinst Du?

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

    Standard

    Verloren gehen kann nichts (sofern du nichts aus der Datenbank löschen lässt). Oder was genau meinst du?
    » sponsor me via GitHub or PayPal or Revolut

  26. #26
    Contao-Nutzer
    Registriert seit
    13.03.2010.
    Beiträge
    227

    Standard

    Ich meinte, wenn die DCA umformuliert wird durch die andere PHP-Schreibweise, dass dann die Felder ersetzt werden und ich das für 60 Leute händisch nachtragen müsste, ohne es aber irgendwo auslesen zu können .
    Geändert von thymian (26.07.2022 um 14:23 Uhr)

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

    Standard

    Für 60 Leute? Sorry, ich verstehe nicht was du meinst. Die Änderung musst du ja nur einmal für dein DCA machen.
    » sponsor me via GitHub or PayPal or Revolut

  28. #28
    Contao-Nutzer
    Registriert seit
    13.03.2010.
    Beiträge
    227

    Standard

    Ok, danke, ich werds einfach ausprobieren .

  29. #29
    Contao-Nutzer
    Registriert seit
    03.03.2010.
    Ort
    82194 Gröbenzell
    Beiträge
    188

    Standard

    Die Inhalte deiner 60 Leute, sind in der Datenbank gespeichert. Solange das Feld in der DCA und in der Datenbanktabelle gleich heisst passiert gar nichts.

    Der PaletteManipulator "setzt" dein Feld nur an die richtige Stelle im Backend.

  30. #30
    Contao-Nutzer
    Registriert seit
    13.03.2010.
    Beiträge
    227

    Standard

    Das waren meine Bedenken, danke! Muss also beim Datenbank-Update danach genau hinschauen.

  31. #31
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    641

    Standard

    Wie sieht eigentlich die sql Konfiguration für ein textarea Feld aus?
    So etwa?
    Code:
    'sql' => ['type' => 'string', 'text' => null, 'default' => ''],

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
  •