Ergebnis 1 bis 11 von 11

Thema: Modul Auflistung Detail-Template mit Avatar und Link ergänzen

  1. #1
    Contao-Fan
    Registriert seit
    13.03.2010.
    Beiträge
    290

    Standard Modul Auflistung Detail-Template mit Avatar und Link ergänzen

    Hallo zusammen,

    ich versuche gerade, das Detail-Template vom Listing-Modul mit Bild und Link zu ergänzen. Die Daten kommen aus einer Mitgliederliste, die ich bisher mit cm_membermaps gepflegt hatte. In 4.13 wurden Avatar und Link noch problemlos dargestellt, auf der Detailseite des Listing-Moduls klappt das jetzt nicht mehr. Hat da jemand einen Tip, an was es liegen könnte? Der Avatar im List-Template funktioniert, nur im Detail-Template eben nicht.

    List-Template:
    PHP-Code:
    <?php if ($this->searchable && $this->for && empty($this->tbody)): ?>
        <?= $this->no_results ?>
        <?php else: ?>
          <div class="all_records">
            <?php foreach ($this->tbody as $class=>$row): ?>
              <div class="<?= $class?> memberCard">
                <?php foreach ($row as $col): ?>
                  <?php if (($col['field'] == 'firstname')): ?>
                    <p class="body name<?= $col['class']; ?>"><a href="<?= $col['url']; ?>"><?= $col['content']; ?>
                  <?php elseif (($col['field'] == 'lastname')): ?>
                    <?= $col['content']; ?></a></p>
                  <?php elseif ($col['field'] == 'avatar'): ?>
                <p class="avatar"><img src="<?= Contao\FilesModel::findByUuid($col['content'])->path?>" alt=""></p>
                  <?php elseif (($col['field'] == 'postal')): ?>
                    <p class="body <?= $col['class']; ?>"><?= $col['content']; ?>
                  <?php elseif (($col['field'] == 'city')): ?>
                    <?= $col['content']; ?></p>
                  <?php else: ?>
                  <p class="body <?= $col['class']; ?>"><?= $col['content']; ?></p>
                  <?php endif; ?>
                <?php endforeach; ?>
              </div>
            <?php endforeach; ?>
          </div>
      <?php endif; ?>
    Detail-Template mit zwei Versuchen:
    PHP-Code:
    <div class="single_record">
        
        <?php foreach ($this->record as $col): ?>
          <?php if ($col['field'] == 'button_linkurl'): ?>
            <p class="route"><a href="https://<?= $col['content']; ?>"><?= $col['content']; ?></a></p>
          <?php elseif ($this->button_linkurl): ?> 
            <p class="route"><a href="https://<?= $this->button_linkurl ?>">Standort auf Google Maps></a></p>
          <?php elseif ($col['field'] == 'avatar'): ?>
         <p class="avatar"><img src="<?= Contao\FilesModel::findByUuid($col['content'])->path?>" alt=""></p>
          <?php else: ?>
            <p class="body <?= $col['class']; ?>"><?= $col['content']; ?></p>
          <?php endif; ?>
        <?php endforeach; ?>
        
      </div>
    DCA-Felder:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['button_linkurl'] = [
      
    // Den Labeltext gleich hier im DCA definieren
      
    'label' => ['Google-Link''Google-Link'],
      
    'inputType' => 'text',
      
    'eval' => ['rgxp' => 'url''maxlength' => 255'tl_class' => 'w50'],
      
    'sql' => ['type' => 'string''default' => ''],
    ];

    $GLOBALS['TL_DCA']['tl_member']['fields']['avatar'] = [
      
    // Den Labeltext gleich hier im DCA definieren
      
    'label' => ['avatar''Bild auswählen'],
      
    'inputType' => 'fileTree',
      
    'eval' => ['files' => true'filesOnly' => true'tl_class' => 'w50 m12''fieldType' => 'checkbox''extensions' => 'jpg,png,jpeg'],
      
    'sql' => "binary(16) NULL",
    ];

    // Das neue Feld den gewünschten Inhaltselementen hinzufügen:
    PaletteManipulator::create()
      ->
    addField(array('button_linkurl''avatar'), 'contact_legend'PaletteManipulator::POSITION_APPEND)
      ->
    applyToPalette('default''tl_member')


  2. #2
    Contao-Fan
    Registriert seit
    13.03.2010.
    Beiträge
    290

    Standard

    PS: Im Detail-Template wird die normale Routine via "<?= $col['content']; ?>" ausgegeben, im Frontend erscheinen da kryptische Zeichen für den Avatar und das Linkziel ohne Verlinkung. Das ist, weil ich die DCA-Felder ja auch im BE-Formular für die Mitglieder zur Verfügung habe. Die im Detail-Template deshalb nochmal extra angesprochenen Felder tauchen aber im Frontend gar nicht auf, auch im Quellcode nicht.

    Ich denke, dass das so im Detail-Template nicht geht. Aber warum? Ich habe gefühlt schon alle Threads seit 2012 durch, die sich annähernd damit beschäftigen, aber zum Listing-Modul gibt es nicht so viele Tipps. Oder ich verstehe sie nicht ;-).
    Geändert von thymian (06.02.2026 um 12:12 Uhr)

  3. #3
    Contao-Fan
    Registriert seit
    13.03.2010.
    Beiträge
    290

    Standard

    Ich habe noch einen alten Thread gefunden, in dem Andreas etwas zur Anpassung von info_default geschrieben hat, um ein Bild reinzuladen:

    https://community.contao.org/de/show...nfobox-Details

    Das würde immer noch funktionieren, aber leider sind die Bilder meiner Mitglieder alle anders benannt und haben unterschiedliche Größen. Hat vielleicht doch jemand eine Idee, wie man da drankommen könnte?

  4. #4
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.907
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von thymian Beitrag anzeigen
    ich versuche gerade, das Detail-Template vom Listing-Modul mit Bild und Link zu ergänzen. Die Daten kommen aus einer Mitgliederliste, die ich bisher mit cm_membermaps gepflegt hatte. In 4.13 wurden Avatar und Link noch problemlos dargestellt, auf der Detailseite des Listing-Moduls klappt das jetzt nicht mehr. Hat da jemand einen Tip, an was es liegen könnte? Der Avatar im List-Template funktioniert, nur im Detail-Template eben nicht.
    Welche Daten kommen bei dir raus, wenn du im Detail-Template $col['content'] mit echo mal ausgibst. Was ist $col['content'] überhaupt? Ein Link? Ein Label? Ein Titel? Das Bild? Pandoras Wunschbox?
    Warum verwendest du es überall, wo ist da der Path gespeichert, ich verstehe nicht? Wo gibst du das Bild aus?

    Zitat Zitat von thymian Beitrag anzeigen
    PS: Im Detail-Template wird die normale Routine via "<?= $col['content']; ?>" ausgegeben, im Frontend erscheinen da kryptische Zeichen für den Avatar und das Linkziel ohne Verlinkung. Das ist, weil ich die DCA-Felder ja auch im BE-Formular für die Mitglieder zur Verfügung habe. Die im Detail-Template deshalb nochmal extra angesprochenen Felder tauchen aber im Frontend gar nicht auf, auch im Quellcode nicht.

    Ich denke, dass das so im Detail-Template nicht geht. Aber warum? Ich habe gefühlt schon alle Threads seit 2012 durch, die sich annähernd damit beschäftigen, aber zum Listing-Modul gibt es nicht so viele Tipps. Oder ich verstehe sie nicht ;-).
    Kryptische Zeichen eher nicht sondern der Pfad zum Bild. Das musst du auflösen mit der Figure Funktion, da ist ja nicht das jpg gespeichert, auch nicht der path.

    Zitat Zitat von thymian Beitrag anzeigen
    Ich habe noch einen alten Thread gefunden, in dem Andreas etwas zur Anpassung von info_default geschrieben hat, um ein Bild reinzuladen:

    https://community.contao.org/de/show...nfobox-Details

    Das würde immer noch funktionieren, aber leider sind die Bilder meiner Mitglieder alle anders benannt und haben unterschiedliche Größen. Hat vielleicht doch jemand eine Idee, wie man da drankommen könnte?
    Siehe oben. Schaue genau was in der column ausgegeben wird.

    Ich würde das alles auch nicht mit dem Listing-Modul hacken, schreibt dir doch direkt deinen eigenen Controller, in welchem du die Member-Details ausgeben kannst, inklusive Bild. Je nach Entwickler ist das sogar als Kleinauftrag drin, sofern dieser angenommen wird (edit: Ohne Filtermöglichkeit natürlich)
    Geändert von zoglo (07.02.2026 um 13:26 Uhr)

  5. #5
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.907
    Contao-Projekt unterstützen

    Support Contao

    Standard

    PS: Da du das Auflistungs-Modul nutzt und mit Templates und DCA-Anpassungen das System modifizierst, würde ich wohl nicht im Forum "Allgemeine Inhaltselemente" danach fragen.

  6. #6
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    7.696
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Moderation: Theme verschoben

    Ich denke hier passt es besser.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  7. #7
    Contao-Fan
    Registriert seit
    13.03.2010.
    Beiträge
    290

    Standard

    Danke fürs Verschieben, mlweb. Ich hab es nicht ins Entwickler-Forum gepostet, da ich keine Entwicklerin bin; fand ich etwas anmaßend.

    @zoglo, ich mühe mich redlich, aber ich verstehe Deine Fragen mal wieder nicht. Ich dachte, ich kann im List- und im Detail-Template einfach dieselbe Schleife einbauen, um über die Uuid an das Avatar-Bild zu kommen, denn da drin steckt nach meinem angelesenen Wissen ja der Pfad. Das funktioniert aber nur im List-Template und mich interessiert, warum.

    Über $col['content'] werden auch im Detail-Template alle Inhalte der Member dargestellt, aber eben nicht die eigenen DCA-Felder, da taucht im Frontend nix auf, also gar nix. Also könnte es doch am Template selbst liegen, das für diese Schleifen nicht gedacht ist, weil es im Modul nicht so vorbereitet wurde.

    Und da ähnliche Fragen wirklich seit 2011 zigmal im Forum auftauchen, aber immer nur anhand des List-Templates beantwortet wurden, interessiert es mich, ob man da ohne große Entwickler-Kenntnisse überhaupt etwas machen kann. Ich gehöre halt zu denen (und es scheinen nicht wenige zu sein), die sich kleine Template-Anpassungen durch stundenlanges Lesen, Vergleichen und Ausprobieren erschließen.

    Insgesamt wundert es mich auch einfach, dass in einem so praktischen Modul wie dem Listing-Modul keine Möglichkeit für eine einfache Bilder-Ausgabe gegeben ist. Denn ich würde mal denken, dass bei Listen sehr oft Bilder benötigt werden, ob nun für Mitglieder, Firmen oder Produkte. Das bitte nicht als Kritik verstehen, sondern nur als Anmerkung, vielleicht auch Anregung.

    Meine eigene Lösung als Dauer-Noob ist – ich hatte es im cm_membermap-Thread ja erwähnt –, dass ich mein DCA-Feld "description" (als rte-textarea angelegt) "einfach" nochmal mit allen Member-Infos fülle und da auch das Bild einbaue. Dann gebe ich über das Detail-Template nur "description" aus.

    Das geht bei 50 Members gerade mal so. Außerdem muss ich so später keine Twig-Templates ändern und hier wieder nervige Fragen stellen. Aber mich würde eben interessieren, wie man es noch machen könnte, auch ohne eigenen Controller oder so. Und warum das Detail-Template auf bestimmte Eingaben nicht reagiert.

    Edit: Die Sache mit dem Bild beginnt natürlich schon beim Member-Modul, wo im Basis-Modus kein Bild zur Verfügung steht.
    Geändert von thymian (07.02.2026 um 14:48 Uhr)

  8. #8
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.907
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von thymian Beitrag anzeigen
    Danke fürs Verschieben, mlweb. Ich hab es nicht ins Entwickler-Forum gepostet, da ich keine Entwicklerin bin; fand ich etwas anmaßend.

    @zoglo, ich mühe mich redlich, aber ich verstehe Deine Fragen mal wieder nicht. Ich dachte, ich kann im List- und im Detail-Template einfach dieselbe Schleife einbauen, um über die Uuid an das Avatar-Bild zu kommen, denn da drin steckt nach meinem angelesenen Wissen ja der Pfad. Das funktioniert aber nur im List-Template und mich interessiert, warum.

    Über $col['content'] werden auch im Detail-Template alle Inhalte der Member dargestellt, aber eben nicht die eigenen DCA-Felder, da taucht im Frontend nix auf, also gar nix. Also könnte es doch am Template selbst liegen, das für diese Schleifen nicht gedacht ist, weil es im Modul nicht so vorbereitet wurde.

    Und da ähnliche Fragen wirklich seit 2011 zigmal im Forum auftauchen, aber immer nur anhand des List-Templates beantwortet wurden, interessiert es mich, ob man da ohne große Entwickler-Kenntnisse überhaupt etwas machen kann. Ich gehöre halt zu denen (und es scheinen nicht wenige zu sein), die sich kleine Template-Anpassungen durch stundenlanges Lesen, Vergleichen und Ausprobieren erschließen.

    Insgesamt wundert es mich auch einfach, dass in einem so praktischen Modul wie dem Listing-Modul keine Möglichkeit für eine einfache Bilder-Ausgabe gegeben ist. Denn ich würde mal denken, dass bei Listen sehr oft Bilder benötigt werden, ob nun für Mitglieder, Firmen oder Produkte. Das bitte nicht als Kritik verstehen, sondern nur als Anmerkung, vielleicht auch Anregung.

    Meine eigene Lösung als Dauer-Noob ist – ich hatte es im cm_membermap-Thread ja erwähnt –, dass ich mein DCA-Feld "description" (als rte-textarea angelegt) "einfach" nochmal mit allen Member-Infos fülle und da auch das Bild einbaue. Dann gebe ich über das Detail-Template nur "description" aus.

    Das geht bei 50 Members gerade mal so. Außerdem muss ich so später keine Twig-Templates ändern und hier wieder nervige Fragen stellen. Aber mich würde eben interessieren, wie man es noch machen könnte, auch ohne eigenen Controller oder so. Und warum das Detail-Template auf bestimmte Eingaben nicht reagiert.

    Edit: Die Sache mit dem Bild beginnt natürlich schon beim Member-Modul, wo im Basis-Modus kein Bild zur Verfügung steht.
    Du solltest dir im Detail Template mal $this->showTemplateVars() .. oder war es dumpTemplateVars?? ausgeben lassen um zu schauen, was überhaupt raus kommt.
    Das Listing-Modul kann dir ALLES ausgeben, auch gehashte Passwörter, sofern eingestellt. Warum soll es Bilder auflösen? Das machst du in deinem Template.

    Ich habe dir bereits eine 1:1 Extension genannt, welche genau das macht was du brauchst, wie die Faust aufs Auge. Sie macht so ziemlich das, was ein Listing Template auch macht, inklusive einem Bild und der Auswahl der Felder, welche im Detailtemplate ausgegeben werden. Sogar mit Filterung (welche man ausschalten kann).

    Du bist wahrscheinlich SEHR NAH DRAN... aber $col['content'] wird es wohl NICHT im Detail-Template geben, daher hatte ich gefragt was dir DORT zur Verfügung steht.
    Du musst kein Entwickler sein um eine Entwicklerfrage zu stellen, es ist aber schlichtweg nicht mehr nur "Inhaltselemente", du versuchst hier ein Core-Modul so zur Ausgabe zu zwingen, dass deine Custom-Felder ausgegeben werden.

    Ich rudere also nochmal zurück:
    WAS steht dir im Detailtemplate zur Verfügung, wenn du einfach mal ALLES dumpst:
    https://contao-academy.de/blog/conta...ablen-anzeigen

    Poste die Ausgabe davon - Hier im Forum - Damit man dir helfen kann.
    Ich werde sicherlich nicht ein Contao so modifizieren und dann das Tempalte des Listing-Moduls für dich zusammenkleben und zwar nur, damit ich schauen könnte woran es liegt. Dafür habe ich keine Zeit. Es ist zudem auch der absolut falsche Weg... ein eigener Controller wäre der richtige Weg.

  9. #9
    Contao-Fan
    Registriert seit
    13.03.2010.
    Beiträge
    290

    Standard

    Hallo @zoglo, danke für Deine Antwort. Ich denke, das ist zu fortgeschritten für mich, ich gebe auf. Vielleicht werde ich Eure Erweiterung einfach mal ausprobieren, ich wollte diesmal halt unabhängig von einer Erweiterung sein.

    Gelesen hatte ich noch von $objFile, aber das sagt mir nichts, da ich kein PHP kann. Deshalb weiß ich auch nicht, was ein Controller ist :-/. Zusammenkleben musst Du für mich gar nichts, das war nicht die Absicht meines Posts.

    Aber kannst Du (oder jemand anderes) kurz und für Dummies erklären, warum im Member-Formular kein Bild vorgesehen ist? Und warum dafür extra Avatar-Erweiterungen geschrieben werden? Welche Gründe hat das Team dafür?

    Anbei trotzdem mal die Template-Variablen, falls jemand anderes auf den Thread stößt oder ähnliche Fragen hat.

    PHP-Code:
    array:[?
      
    "record" => array:14 [?
        
    "avatar" => array:[?
          
    "raw" => b"Ýa½C\x11\x11ë€0\x06ò6¿J\x1D"
          "label" 
    => "avatar"
          "content" 
    => b"Ýa½C\x11\x11ë€0\x06ò6¿J\x1D"
        
    ]
        
    "firstname" => array:[?]
        
    "lastname" => array:[?]
        
    "title" => array:[?]
        
    "company" => array:[?]
        
    "street" => array:[?]
        
    "postal" => array:[?]
        
    "city" => array:[?]
        
    "phone" => array:[?]
        
    "mobile" => array:[?]
        
    "email" => array:[?]
        
    "website" => array:[?]
        
    "button_linkurl" => array:[?]
        
    "description" => array:[?]
      ]
      
    "referer" => "javascript:history.go(-1)"
      "back" 
    => "Zurück"
      "style" 
    => ""
      "class" 
    => "mod_listing"
      "cssID" 
    => ""
      "inColumn" 
    => "main"
      "headline" 
    => ""
      "hl" 
    => "h2"


  10. #10
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.907
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von thymian Beitrag anzeigen
    Aber kannst Du (oder jemand anderes) kurz und für Dummies erklären, warum im Member-Formular kein Bild vorgesehen ist? Und warum dafür extra Avatar-Erweiterungen geschrieben werden? Welche Gründe hat das Team dafür?
    Wahrscheinlich, weil es dafür schon Extensions gab und Member in Contao eher für Login gedacht sind, als dass sie auf der Website als Liste dargestellt werden.
    Es gibt ja einige Member-Erweiterungen, eine wäre hier, die gibt es nicht für Contao 5 und Bilder gibt es auch nicht:
    https://github.com/friends-of-contao/contao-memberlist

    Übrigens sehe ich bei dir die Daten schon... aber das FilesModel, wie du erwähnt hast (objFile), sollte dir den Path zurückgeben.

    Hier einmal alter Code (weil gewachsen und diese 4.9, 4.13, 5.3+ Kompatibilität usw...), sollte aber in Contao 5 immer noch so funktionieren:
    https://github.com/oveleon/contao-me...ember.php#L186

    PHP-Code:
    array:[?
      
    "record" => array:14 [?
        
    "avatar" => array:[?
          
    "raw" => b"Ýa½C\x11\x11ë€0\x06ò6¿J\x1D" 
    Also irgendwie sowas sollte klappen?

    Also scheint es eins davon zu sein, ist jetzt einfach mal blind geschrieben, ich weiß nicht genau was alles bei rauskommt im Listing Modul.

    PHP-Code:
    $meineUuidZumBild $this->record['avatar']['raw'] ?? null;

    if (
    $meineUuidZumBild !== null) {
        
    $path FilesModel::findByUuid($meineUuidZumBild )?->path;

    Und $path ist dann dein Bild... Was aber auch geht ist sofort den Figurebuilder zu nutzen, der kann mit der UUID umgehen:

    PHP-Code:
    $this->figure($meineUuidZumBild, [400400]); 
    ^ wobei das dann das Bild auf 400x400px setzt.

  11. #11
    Contao-Fan
    Registriert seit
    13.03.2010.
    Beiträge
    290

    Standard

    Vielen Dank für Deine Mühe, zoglo! Jetzt hast Du ja doch Code gepostet ;-).

    Wahrscheinlich, weil es dafür schon Extensions gab und Member in Contao eher für Login gedacht sind, als dass sie auf der Website als Liste dargestellt werden.
    Ja, klar, daran habe ich überhaupt nicht gedacht.

    Ich werde weiterprobieren, wenn ich wieder Zeit habe, jetzt gerade muss ich aussteigen, weil ab März die Saison in meinem zweiten Job startet und ich noch so viel vorbereiten muss. Ich melde mich wieder, wenn ich weitergekommen bin.

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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