Contao-Camp 2024
Ergebnis 1 bis 13 von 13

Thema: Member-Daten auslesen

  1. #1
    Contao-Nutzer
    Registriert seit
    13.07.2011.
    Beiträge
    180

    Standard Member-Daten auslesen

    Hallo

    Ich müsste per PHP Member-Daten auslesen. Im Detail geht's darum, dass ich von diversen Membern eine Liste anzeigen lasse, jeweils mit Link zur Detailansicht. In der Detailansicht sollen dann alle Bilder des Users (homeDir) ausgelesen und dargestellt werden.

    Ich glaube, für den individuell angemeldeten User könnte ich das über:
    $this->import('FrontendUser','User');
    $dir = $this->User->homeDir;

    Wie mache ich das aber für einen anderen User, von dem ich lediglich die ID habe?
    Vielen Dank für jede Hilfe!

    Gruss
    Peri

  2. #2
    Contao-Nutzer
    Registriert seit
    13.07.2011.
    Beiträge
    180

    Standard

    OK, wie immer, kaum geschrieben, selber gefunden:

    $objMember = \MemberlistMemberModel::findActiveById($userID);
    $obDirectory = \FilesModel::findByUuid($objMember->homeDir);
    $pathDirectory = $obDirectory->path;

    Aber was noch bleibt: wie zeige ich jetzt möglichst mit Contao-eigenen Mitteln die Bilder da drin an? Sortiert nach Aufnahmedatum (oder auch Upload-Datum) sowie mit Grossansicht?

  3. #3
    Contao-Nutzer
    Registriert seit
    13.07.2011.
    Beiträge
    180

    Standard

    Und sorry zum Zeiten. Auch das habe ich jetzt hingekriegt.
    Also, hat sich alles erledigt.

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

    Standard

    Zitat Zitat von Perikomarilensko Beitrag anzeigen

    PHP-Code:
    $objMember = \MemberlistMemberModel::findActiveById($userID); 
    sollte wohl eher

    PHP-Code:
    $objMember = \MemberModel::findById($userID); 
    sein. (Du willst ein Member und nicht einen Eintrag in einer Memberlist). Das dürfte zwar vom Ergebnis her auf das Gleich rauslaufen, aber MemberlistModel fühlt sich falsch an.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  5. #5
    Contao-Nutzer
    Registriert seit
    13.07.2011.
    Beiträge
    180

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    sollte wohl eher

    PHP-Code:
    $objMember = \MemberModel::findById($userID); 
    sein. (Du willst ein Member und nicht einen Eintrag in einer Memberlist). Das dürfte zwar vom Ergebnis her auf das Gleich rauslaufen, aber MemberlistModel fühlt sich falsch an.
    Vielen Dank, habe ich so umgesetzt.
    Wie du gesagt hast, Resultat vorne raus ist identisch. Aber wenn schon, dann machen wir's richtig

    Gruss,
    Peri

  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

    Wie hast du die Galerie eines nicht eingeloggten Mitglieds ausgegeben?
    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
    Registriert seit
    13.07.2011.
    Beiträge
    180

    Standard

    Hallo

    homeDir auslesen, Dateien suchen und ausgeben.

    homeDir
    PHP-Code:
        $objMember = \MemberModel::findById($userID);
        
    $obDirectory = \FilesModel::findByUuid($objMember->homeDir);
        
    $pathDirectory $obDirectory->path
    Bilder suchen und in Array laden
    PHP-Code:
        // Bilder
        
    $memberHasImages false;
        if(
    $pathDirectory && $pathDirectory != '') {
            
    // Pfad anpassen (trailing Slash)
            
    $pathDirectory .= '/';
            
            
    // Pfad öffnen und Dateien auslesen
            
    if ($handle opendir($pathDirectory)) {
                
    // Array für Speicher
                
    $memberFiles = array();
                
                
    // Durch Einträge loopen
                
    while (false !== ($entry readdir($handle))) {    
                    if (
    $entry != '.' && $entry != '..') {
                        
    // Nur JPG/GIF/PNG zulassen
                        
    if(memberStringEndsWith($entry'.jpg') | memberStringEndsWith($entry'.jpeg') | memberStringEndsWith($entry'.gif') | memberStringEndsWith($entry'.png')) {
                            
    // Bild erstellen (klein)
                            
    $imgKlein $this->getImage($pathDirectory $entry150150'center_center');
                            
                            
    // Bild erstellen (gross)
                            
    $imgGross $this->getImage($pathDirectory $entry800800'proportional');
                            
                            
    // Array für Bild-Speichern
                            
    $memberFile = array($pathDirectory $entry$imgKlein$imgGross);
                            
                            
    // Bild in Array einfügen
                            
    array_push($memberFiles$memberFile);
                            
                            
    // Flag setzen
                            
    $memberHasImages true;
                        }
                    }
                }
            
                
    // Schliessen
                
    closedir($handle);
            }
        } 
    Ich weiss nicht, ob das alles zu 100% korrekt und vor allem optimal gelöst ist. Aber in der aktuellen Situation löst es das Problem genau wie gewünscht.

  8. #8
    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, danke. Ich dachte du hättest einen einfachen Weg gefunden um direkt ein Inhaltselement Typ Galerie auszugeben und diesem vorher mitzuteilen, welche Bilder es nehmen soll. Also speziell die Bilder aus dem Ordner eines bestimmten Mitglieds.
    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

  9. #9
    Contao-Nutzer
    Registriert seit
    13.07.2011.
    Beiträge
    180

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Ich dachte du hättest einen einfachen Weg gefunden um direkt ein Inhaltselement Typ Galerie auszugeben und diesem vorher mitzuteilen, welche Bilder es nehmen soll. Also speziell die Bilder aus dem Ordner eines bestimmten Mitglieds.
    Nein, habe ich nicht. Ist jetzt aber auch nicht so kompliziert geworden.
    Danke im Übrigen euch allen für eure tolle Hilfe und den Input hier im Forum!

  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

    Das hatte mich interessiert und ich habe es hinbekommen.

    Man kann eine Galerie erstellen, auf einer z.B. unveröffentlichten Seite oder einem unveröffentlichten Artikel. Bilderauswahl ist dabei egal. Das CE selber muss dabei veröffentlicht (Feld "Unsichtbar" nicht anhaken) sein.

    Dann erstellt man ein CE Typ HTML mit folgendem Inhalt in einem eigenen ce_html-Template, welches man zuweist.
    PHP-Code:
    <?php

    /** this CE = Type html, template = ce_html_gallery */

    $galleryCeId 43// ID of CE type gallery on another unpublished article
    $memberId = \Input::get('mid'); // or something else to get a member ID

    if($memberId)
    {
      
    $homeDir = \MemberModel::findByPk($memberId)->homeDir;
      
    $homeDirFiles = \FilesModel::findByPid($homeDir);

      if(
    count($homeDirFiles))
      {
        
    $myContentModel = \ContentModel::findByPk($galleryCeId);

        
    $multiSRC = array();
        foreach(
    $homeDirFiles as $file)
        {
          
    $multiSRC[] = $file->uuid;
        }
        
    $multiSRC serialize($multiSRC);

        
    // Fit the gallery CE to your needs
        
    $myContentModel->multiSRC $multiSRC;
        
    $myContentModel->orderSRC $multiSRC;

        
    $myGallery = \Controller::getContentElement($myContentModel);

        echo 
    $myGallery;
      }
    }
    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-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Du musst nicht zwingend irgendwo eine Gallery haben, sondern könntest auch

    PHP-Code:
    $myContentModel = new \ContentModel();

    // ...

    $myContentModel->multiSRC $multiSRC
    $myContentModel->orderSRC $multiSRC
    $myContentModel->alleWeiterenEigenschaften = ...;
    // ... 
    machen. Du musst dann "nur" herausfinden, welche weiteren Eigenschaften eines ContentModels (felder in tl_content) eine Gallery setzt bzw. benötigt.

    Mit der Gallery auf einer unveröffentlichten Seite hast Du natürlich bequemer Zugriff auf die anderen Eigenschaften. Nachteil: das ganze Konstrukt ist
    kaputt, falls irgendjemand aus versehen die Gallery löscht. Bei "alles im Code" kann das nicht passieren.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  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

    Das ist mir klar, und ich habe mit Absicht den Weg über ein vorhandenes Element gewählt. Genau aus dem Grund, dass ich in besagtem Element diverse Einstellungen vornehmen kann.

    Den von dir beschriebenen Weg würde ich nicht empfehlen. Dein erwähnter Nachteil kann aufgefangen werden, indem man noch alle möglichen Checks einbaut, ob das Element überhaupt existiert, ob es vom Typ Galerie ist usw. Ist aber IMHO nicht nötig. Wenn z.B. jemand das CE HTML löschte, wäre das "Konstrukt" auch hinüber.

    Außerdem könnte man noch ne Überschrift eintragen "Individuelle Mitgliedergalerie (nicht löschen)". Und die headline dann setzen.
    PHP-Code:
    $myContentModel->headline ''
    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

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

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Das ist mir klar
    aber mir war nicht klar, ob das Dir (und den Mitlesern) bekannt ist. Darum als Hinweis falls es jemanden hilft.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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
  •