$user und anhand von Argument spezifischen $user laden?

am 25.10.2010 - 11:27 Uhr in
Hallo,
ich habe 2 Fragen zum $user:
Wenn ich print_r($user)
ausgebe, werden mir eine Reihe von Variablen angezeigt (zB. [uid] [name] [pass] [mail] [mode]). Kann ich irgendwo definieren welche ich ausgeben möchte bzw. welche Felder $user beinhalten soll?
Zweite Frage: Stellt Drupal eine Funktion bereit, dass ich auch Informationen anderer User einfach laden kann, wenn ich deren uid habe?
Zum Beispiel bekomme ich per Argument die uid eines Users übergeben, zB. $profile_id = arg(1);
. Dann würde ich zB aufrufen: $profile = load_userdaten($profile_id)
und schon habe ich einen Zugriff auf die Userdaten wie beim Aufruf von $user->name. Gibt es so eine Funktion wie load_userdaten?
Vielen Dank,
gruß Mark
- Anmelden oder Registrieren um Kommentare zu schreiben
Zum $user
am 25.10.2010 - 13:49 Uhr
Allerdings hört sich diese Frage auch so an, als wolltest du ein Profil themen. Dafür musst du nicht die Userdaten einzeln abrufen, das macht Drupal bereits.
das User-Objekt ist innerhalb
am 25.10.2010 - 13:54 Uhr
das User-Objekt ist innerhalb von Drupal festgelegt und kann von Dir nicht geändert werden. Die PHP-Funktion print_r() dient ja gerade dazu eine komplette Struktur auszugeben. Warum benutzt Du die, wenn Du mit dem Ergebnis nicht klar kommst?
Mit der Drupal-Funktion user_load kannst Du Dir über die UID des User das zugehörige User-Objekt laden.
Beste Grüße
Werner
Super, vielen Dank. Ihr habt
am 26.10.2010 - 08:17 Uhr
Super, vielen Dank. Ihr habt mir schon sehr weitergeholfen.
Jetzt habe ich dazu aber noch eine Frage:
Ja, es ist richtig das ich ein Userprofil themen möchte.
Dieses setzt sich aus mehreren ContentProfile Inhaltstypen zusammen.
Jetzt könnte ich ja mit user_load() oder $account alle Felder per Hand in ein HTML-Konstrukt laden. Das wäre am performantesten (da keine zusätzlichen DB-Abfragen), dafür aber auch am unübersichtlichsten.
Eine weitere Möglichkeit die ich sehe, ist die das Profil in 4-5 Views zu organisieren, die Views zu themen und diese anschließend im Profil zu laden. Das wäre übersichtlicher, dafür aber auch nicht so performant.
Wie würdet ihr das userprofil erstellen, wenn viele Daten aus mehreren Contenttypen geladen/angezeigt werden müssen?
Vielen Dank!
Viele Grüße Mark
Mehrere ContentProfile Inhaltstypen?
am 26.10.2010 - 13:20 Uhr
Warum gibt es überhaupt mehrere ContentProfile Inhaltstypen? Ist das nötig? Ich bin bisher immer mit jeweils einem ausgekommen, auch wenn es umfangreicher wurde. Und wenn schon mehrere Inhaltstypen notwendig sind und verschiedene Inhalte dort alle einem User zugeordnet sind, lädt Drupal die Inhalte nicht automatisch auf der Profilseite?
Hast du dir über print_r() schon mal auf der Profilseite angesehen, welche Infos du schon alle hast? Ich würde dann nur noch mit eigenen Datenbankabfragen im Profil selbst die Inhalte holen, die noch fehlen.
Aus deinem Kommentar lese ich aber heraus, dass die Profilseite bereits alle Infos enthält. Die musst du nur noch themen. Wozu die Datenbank für Infos bemühen, die du schon hast?
Hallo Nicolai, danke für die
am 26.10.2010 - 15:49 Uhr
Hallo Nicolai,
danke für die Hilfe.
Ja, in meinem Fall ist es aus verschiedenen Gründen sinnvoll mehrere Contenttypen zu nutzen. Sicherlich ist es auch eine Geschmackssache bzw. (mangelnde) Erfahrung. Jedenfalls habe ich zur Zeit mehrere Contenttypen und suche die bestmöglichste Lösung zum erstellen eines Userprofils.
Wenn ich einen print_r($account) bzw. print dsm($account) ausgebe, erhalte ich alle nötigen Angaben. Das ist korrekt. Nur leider in einer unmöglichen Ausgabe. Zum Beispiel
#children (String, 8798 characters ) <h3 class="content-profile-title" id="cont...
enthält quasi eine komplette Seite mit knapp 9000 Zeichen. Da kann ich nicht mehr auf Variablen zugreifen etc.
Überhaupt habe ich im print_r($account) keine Variable aus dem ContentProfile gefunden, so dass ich in der user-profile.tpl.php drauf zugreifen könnte.
Anscheinend wird ne Menge Zeug geladen das ich nicht brauchen kann :( Oder ich weiß nicht wie ich es sinnvoll nutzen kann :(
Selbst ausgeben
am 26.10.2010 - 16:38 Uhr
Wenn der String knapp 9000 Zeichen enthält, kannst du daran nichts ändern. Aber du musst ja auch nicht 9000 Zeichen ausgeben. Schneid den Text einfach irgendwo ab.
Wenn ich einen print_r($account) bzw. print dsm($account) ausgebe, erhalte ich alle nötigen Angaben.
Na also, dann geht es doch nur noch darum, die Daten so auszugeben, wie du sie haben willst. Einfach die richtigen Variablen aussuchen und vor der Ausgabe ggf. noch etwas bearbeiten (auf x Zeichen kürzen, oder ein
<p>
drum packen etc.)