Contao-Camp 2024
Ergebnis 1 bis 22 von 22

Thema: Profilbild als Option für Mitglieder

  1. #1
    Contao-Nutzer
    Registriert seit
    20.05.2016.
    Ort
    Nürnberg
    Beiträge
    9

    Frage Profilbild als Option für Mitglieder

    Hallo liebe Community!

    Ich habe folgendes Problem: Ich möchte gerne mein Mitglieder-Modul (tl_member) erweitern, in dem ich die Option Profilbild hinzufügen möchte.

    Meine Palette und mein Field in der dcaconfig.php

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace(
        
    'gender;''gender;{images},picture;',
        
    $GLOBALS['TL_DCA']['tl_member']['palettes']['default']
    ); 
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['picture'] = array
    (
        
    'label'     => &$GLOBALS['TL_LANG']['tl_member']['picture'],
        
    'exclude'   => true,
        
    'inputType' => 'fileTree',
        
    'eval'      => array('mandatory'=>false'feEditable' => true'feViewable' => true'files'=>true'filesOnly'=>true'doNotOverwrite'=>true'fieldType'=>'radio''extensions'=>'jpg,jpeg''maxlength'=>409600),
        
    'sql'       => "varchar(255) NOT NULL default ''"
    ); 
    Wenn ich nun die Datenbank aktualisieren, das Feld in der Tabelle angelegt wurde und ich unter dem Mitglied ein Bild im Dateibaum auswähle - kommt nach dem speichern: Ein Fehler ist aufgetreten! (im Backend)

    Leider ist diese Fehlermeldung nicht sehr detailliert (Logs bleiben ruhig). Wenn ich den Schritt versuche zu wiederholen, hat er das Bild (Dateipfad) auch gar nicht gespeichert. Datenbank bleibt leer. Kein Pfad.
    Habe ich etwas übersehen oder stimmt da etwas nicht mit dem inputType 'fileTree'.

  2. #2
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Ich denke dir fehlt der load_ and save_callback.
    Gucke hier: https://community.contao.org/de/show...Tree-unter-3-2

    Beste Grüsse
    Michael
    Contao ist echt !

  3. #3
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Michael Beitrag anzeigen
    Ich denke dir fehlt der load_ and save_callback.
    Die haben damit sicher nichts zu tun!


    @Ocean
    Such einfach mal im System nach 'fileTree' dann findest du diverse Beispiele.
    Als kleiner Hinweis: Deine sql Definition (da liegt der Fehler)!
    Geändert von the_scrat (30.05.2016 um 18:48 Uhr)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  4. #4
    Contao-Nutzer
    Registriert seit
    20.05.2016.
    Ort
    Nürnberg
    Beiträge
    9

    Standard

    Zitat Zitat von the_scrat Beitrag anzeigen
    Als kleiner Hinweis: Deine sql Definition (da liegt der Fehler)!
    Danke schon mal für dein Tipp! Ich habe nun viele dca's im System angeschaut und die meisten sql-Definitionen beim fileTree sind "binary(16) NULL".

    Habe es natürlich direkt versucht, das Bild wird in der DB als Binärcode abgespeichert jedoch spinnt das Contao-Backend immer noch. Bekomme immer noch die Meldung von oben. Muss dann den Datensatz wieder entfernen damit die Fehlermeldung verschwindet. Was passt Contao nicht?

    Ich selbst dachte eigl. die beste Lösung wäre den Dateipfad als Text oder varchar in der DB zu speichern und diesen dann einfach im FE-Template in einem IMG-Tag auszulesen.

    LG Ocean
    Geändert von Ocean (30.05.2016 um 21:57 Uhr)

  5. #5
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Also normalerweise musst du nur die DB aktualsisieren. Habs vorher getestet mit varchar, das ging nicht, bekam aber auch keine Fehlermeldung. Mit binary(16) gings dann (ebenfalls ohne Fehlermeldung).
    Hast du evtl. den Cache aktiviert? Den müsstest du ggf. einmal leeren.

    Wenn alles nix hilft, Feld komplett entfernen (reicht auch das sql auszukommentieren + DB Update).
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  6. #6
    Contao-Nutzer
    Registriert seit
    20.05.2016.
    Ort
    Nürnberg
    Beiträge
    9

    Standard

    Also den Cache habe ich während der Entwicklung deaktiviert. Mich wundert es selbst wie diese Fehlermeldung zustande kommen kann. Anscheinend hat Contao ein Problem damit das Bild mit seinem Pfad korrekt abzuspeichern? Oder es entsteht ein Problem davor und der Speichervorgang kommt erst gar nicht zustande.

    Werde mal weitersuchen und melde mich falls ich etwas finden sollte.

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

    Zitat Zitat von Ocean Beitrag anzeigen
    ... das Bild wird in der DB als Binärcode abgespeichert ...
    Nur zur Klärung: Das Bild wird nicht binär in dem Feld picture gespeichert. Es wird die UUID der Datei gespeichert. Alle anderen Daten zu dem Bild findest du in tl_files unter dieser UUID, aber auch dort wird das Bild nicht binär gespeichert.

    Bei mir in Contao 3.5.12 hat es auch auf Anhieb funktioniert, nachdem ich obigen Code mit dem richtigen SQL in meine system/config/dcaconfig.php kopiert hatte.
    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

  8. #8
    Contao-Nutzer
    Registriert seit
    18.03.2018.
    Beiträge
    133

    Standard

    Wie sieht nun der richtige Code aus ?

  9. #9
    Contao-Nutzer
    Registriert seit
    23.08.2013.
    Beiträge
    87

    Standard

    Du solltest beim Entwickeln den app_dev.php Einstiegspunkt verwenden. Zum einen hast du dann keine Cache Invalidation Probleme und vor allen du siehst was das Problem ist, wenn ein Fehler auftritt.

  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

    Zitat Zitat von vfl63langerwehe Beitrag anzeigen
    Wie sieht nun der richtige Code aus ?
    PHP-Code:
    <?php

    $GLOBALS
    ['TL_DCA']['tl_member']['palettes']['default'] = str_replace(
      
    'gender;',
      
    'gender,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,
        
    'filesOnly'     =>true,
        
    'fieldType'     =>'radio',
        
    'extensions'    =>'jpg,jpeg',
        
    'feGroup'       =>'personal'
      
    ),
      
    'sql'      => "binary(16) NULL"
    );

    ?>
    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
    Registriert seit
    13.03.2010.
    Beiträge
    227

    Standard Binärcode statt Avatar-Bild - Bitte um Hilfe

    Hallo zusammen,

    ich möchte den Thread nochmal hochholen. Auch ich habe bei tl_member.php mehrere Felder via DCA hinzugefügt, weil die Erweiterung xtmembers für 4.4 ja nicht mehr zur Verfügung steht. Ein Feld "avatar" ist auch dabei, weil ich sämtliche Avatar-Erweiterungen über den CM entweder nicht installieren konnte (HeimrichHannot – Contao-Member-Bundle, Oveleon – Contao-Member-Extension-Bundle) oder kein Bild im Frontend angezeigt wird (Terminal42).

    Alle DCA-Felder tauchen im Backend schön auf und sollen jetzt mit Christians cm_membermaps ausgegeben werden. Wie hier schon in vielen, vielen Threads besprochen, erscheinen im Frontend anstelle des Avatar-Bildes jedoch die Binär-Zeichen und ich kriege sie auch nicht weg, egal, welche Lösung aus dem Forum ich probiert habe. Hat jemand noch einen Tipp?

    Die Mitgliedsdaten werden im Template so ausgegeben:
    HTML-Code:
    <tbody>
    <?php foreach ($this->record as $col): ?>
    <tr class="<?= $col['class']; ?>">
    	<td class="label"><?= $col['label']; ?></td>
        <td class="value"><?= $col['content'];?></td>
    </tr>
    <?php endforeach; ?>
    </tbody>
    Mein DCA:
    PHP-Code:
    $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,
        
    'fieldType'     =>'checkbox',
        
    'extensions' => 'jpg,png,jpeg',
        
    'feGroup'       =>'contact'),
      
    'sql'      => "binary(16) NULL"
    ); 
    Danke!
    Marion
    Geändert von thymian (11.02.2020 um 23:48 Uhr)

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

    Standard

    Hat niemand eine Idee oder ist es zu einfach? Ich habe stundenlang probiert, aber nicht die Lösung gefunden.

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

    Standard

    Du brauchst etwas wie

    PHP-Code:
     $myfile = \Contao\FilesModel::findByUuid($deine_uuid_aus_avatar)));
     
    // $myfile->path; 
    um mit der uuid, die in avatar gespeichert wird ("die Binär-Zeichen") auf den Pfad zur Datei zuzugreifen.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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

    Standard

    Hallo fiedsch,

    diesen Tipp von Dir hatte ich auch schon gelesen, aber ich bin überhaupt keine PHP-Spezialistin und weiß deshalb nicht, wie ich eine UUID aus der Mitgliederliste automatisiert abfragen lassen sollte, in welches Template das dann müsste usw... Wenn ich das könnte, hätte ich das mit den vielen Tipps hier bestimmt schon längst hinbekommen.

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

    Standard

    Zitat Zitat von thymian Beitrag anzeigen
    Hallo fiedsch,

    diesen Tipp von Dir hatte ich auch schon gelesen, aber ich bin überhaupt keine PHP-Spezialistin und weiß deshalb nicht, wie ich eine UUID aus der Mitgliederliste automatisiert abfragen lassen sollte
    Du musst sie nicht abfragen. Sie ist das, was Du in #11 als "anstelle des Avatar-Bildes jedoch die Binär-Zeichen" bezeichnet hast.

    in welches Template das dann müsste usw... Wenn ich das könnte, hätte ich das mit den vielen Tipps hier bestimmt schon längst hinbekommen.
    Das kann ich Dir auswendig auch nicht sagen. Herausfinden kannst Du das, wenn Du die Seite im Debug-Mode aufrufst (https://docs.contao.org/manual/de/system/debug-modus/) und Dir dann das erzeugte HTML anschaust. Dort werden Kommentare eingefügt, die zeigen, in welchem Template der jeweilige Abschnitt erzeugt wurde.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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

    Standard

    Hm, also, ich habe mich missverständlich ausgedrückt.

    Ich weiß noch nicht mal, was Du mit "$myfile" meinst. Und "$deine_uuid_aus_avatar" ist ja gerade, was ich suche, oder?

    Im Moment habe ich im Member-Listentemplate Folgendes stehen, das img-Tag ist jetzt leer, und nicht mehr binär. Die Felder "description" und "avatar" habe ich im DCA unter app>Resources eingefügt, die "website" wollte einfach kein Link sein, deshalb hier extra als Link ausgebildet:
    HTML-Code:
    <tbody>
    <?php foreach ($this->record as $col): ?>
      <tr class="<?php echo $col['class']; ?>">
      <?php if ($col['field'] == 'website'): ?>
        <td class="website"><a href="http://<?php echo $col['content']; ?>" alt="<?php echo $col['content']; ?>" target="_blank"><?php echo $col['content']; ?></a></td>
      <?php elseif ($col['field'] == 'description'): ?>
    	<td class="description"><?php echo $col['content']; ?></td>
    	<?php elseif ($col['field'] == 'avatar'): ?>
    	<td class="avatar"><img src="<?php echo \FilesModel::findByUuid($this->arrData['avatar'])->path; ?>" /></td>
      <?php else: ?>
        <td class="label"><?php echo $col['label']; ?></td>
        <td class="value"><?php echo $col['content']; ?></td></tr>
     <?php endif; ?>
     <?php endforeach; ?>
     
    </tbody>

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

    Standard

    Ich hab's jetzt endlich, ich fass' es nicht. Hatte nochmal einen Beitrag aus 2009 gefunden, dann hats geschnackelt.

    Vielleicht hilft es anderen auch:

    PHP-Code:
    <?php elseif ($col['field'] == 'avatar'): ?>
        <td class="avatar"><img src="<?php echo \FilesModel::findByUuid($col['content'])->path?>" alt=""></td>
      <?php else: ?>

  18. #18
    Contao-Fan
    Registriert seit
    19.06.2009.
    Beiträge
    827

    Standard

    Ansonsten könnte die Avatar-Erweiterung passen.
    Gruß ChrMue

  19. #19
    Contao-Nutzer
    Registriert seit
    01.03.2019.
    Beiträge
    23

    Standard

    Zitat Zitat von thymian Beitrag anzeigen
    Ich hab's jetzt endlich, ich fass' es nicht. Hatte nochmal einen Beitrag aus 2009 gefunden, dann hats geschnackelt.

    Vielleicht hilft es anderen auch:

    PHP-Code:
    <?php elseif ($col['field'] == 'avatar'): ?>
        <td class="avatar"><img src="<?php echo \FilesModel::findByUuid($col['content'])->path?>" alt=""></td>
      <?php else: ?>
    OMG genau das habe ich gebraucht.
    Vielen Dank!

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

    Standard

    #18

    Hallo Christian,

    die ganzen Avatar-Erweiterungen haben bei mir leider nicht funktioniert.

    VG Marion

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

    Standard

    @ Kimo

    Das freut mich, wo ich doch von PHP keine Ahnung habe :-).

    Damit das Feld im Backend richtig sitzt, habe ich noch die Länge und die Abstände angepasst. Im DCA sieht es nun so aus:

    PHP-Code:
    $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"
    ); 

  22. #22
    Contao-Nutzer
    Registriert seit
    01.06.2012.
    Ort
    Freiburg
    Beiträge
    58

    Standard

    Zitat Zitat von thymian Beitrag anzeigen
    Ich hab's jetzt endlich, ich fass' es nicht. Hatte nochmal einen Beitrag aus 2009 gefunden, dann hats geschnackelt.

    Vielleicht hilft es anderen auch:

    PHP-Code:
    <?php elseif ($col['field'] == 'avatar'): ?>
        <td class="avatar"><img src="<?php echo \FilesModel::findByUuid($col['content'])->path?>" alt=""></td>
      <?php else: ?>
    Flexibler geht es mit den Inserttags {{image::*}} und {{picture::*}}:

    PHP-Code:
    <!-- Bildgröße in Pixeln angeben -->
    {{image::<?=$this->avatar;?>?width=100}}

    <!-- Eine Bildgröße des Contao-Themes verwenden -->
    {{picture::<?=$this->avatar;?>?size=2}}
    siehe https://docs.contao.org/manual/de/ar...#verschiedenes

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
  •