Gestaltung vom user profile
am 14.09.2006 - 22:40 Uhr in
Hallo, nachdem ich auf der englischen Seite keine Antwort auf meine Frage gefunden habe, will ich hier einmal nachfragen.
Ich möchte nicht das user_module verändern, sondern mit templates arbeiten.
1. Wie kann ich diesen Code in eine user_profile.tpl.php umwandeln?
Wichtig ist mir, dass wenn ich ein Feld mit %value gekennzeichnet habe, es auch als Link dargestellt wird, sodass ich auf die Profileliste gelange.
function theme_user_profile($account, $fields) {
$output = '<div class="profile">';
$output .= theme('user_picture', $account);
foreach ($fields as $category => $items) {
if (strlen($category) > 0) {
}
$output .= '<dl>';
foreach ($items as $item) {
if (isset($item['title'])) {
$output .= '<dt class="'. $item['class'] .'">'. $item['title'] .'</dt>';
}
$output .= '<dd class="'. $item['class'] .'">'. $item['value'] .'</dd>';
}
$output .= '</dl>';
}
$output .= '</div>';
return $output;
}2. Wie kann ich den Begriff "Mitglied seit: 56 Minuten 35 Sekunden" in "Eintrittsdatum am: 14.09.06" verändern?
Für Hilfe wäre ich sehr dankbar.
- Anmelden oder Registrieren um Kommentare zu schreiben

Der erste Punkt hat sich
am 23.09.2006 - 20:10 Uhr
Der erste Punkt hat sich erledigt.
Nur habe ich noch keine Lösung für den zweiten Punkt gefunden.
Hast Du es inzwischen
am 26.09.2006 - 11:45 Uhr
Hast Du es inzwischen hinbekommen?
Die Funktion dafür sähe fogendermaßen aus:
function phptemplate_user_profile($account, $fields) {$output = '<div class="profile">';
$output .= theme('user_picture', $account);
foreach ($fields as $category => $items) {
if (strlen($category) > 0) {
}
$output .= '<dl>';
foreach ($items as $item) {
if (isset($item['title'])) {
$output .= '<dt class="'. $item['class'] .'">'. $item['title'] .'</dt>';
}
if ($item['title'] == t('Member for')) {
$output .= '<dd class="'. $item['class'] .'">'.format_date($account->created, 'small').'</dd>';
} else $output .= '<dd class="'. $item['class'] .'">'. $item['value'] .'</dd>';
}
$output .= '</dl>';
}
$output .= '</div>';
return $output;
}
und kommt in die Datei template.php in Deinem Themeverzeichnis, einfach anlegen, wenn nicht vorhanden.
Aber das hast Du ja bereits rausgefunden.
Den Ausdruck
format_date($account->created, 'small')kannst Du auch alsformat_date($account->created, 'custom', 'd.m.y')notieren, um absolute Kontrolle über das Format des Datums zu erhalten.vg
--
sanduhrs - drupalcenter
-----------------------
http://erdfisch.de
Hallo, danke für die Hilfe,
am 26.09.2006 - 22:00 Uhr
Hallo, danke für die Hilfe, ich hab es so gemacht wie du es beschrieben hast.
Nur steht bei mir jetzt als Datum 01.01.70.
Was muß ich jetzt noch ändern?
Die Uhr stellen ;) Keine
am 29.09.2006 - 17:43 Uhr
Die Uhr stellen ;)
Keine Ahnung, bei mir funktioniert es wie gewünscht, auch mit dem richtigen Datum - vielleicht hast Du irgendwo einen Tippfehler?!
vg
--
sanduhrs - drupalcenter
--------------------------------
http://erdfisch.de
Danke für Deine Hilfe ich
am 30.09.2006 - 18:52 Uhr
Danke für Deine Hilfe ich hab die Ursache gefunden.
Bei Dir heißt es account und bei mir user.
Ah, alles klar. in der
am 30.09.2006 - 19:17 Uhr
Ah, alles klar. in der Ursprungsfunktion hieß es
function phptemplate_user_profile($account, $fields) {}, entsprechend hieß die Variable$account. Aber Du hast Recht, denn die Benutzung der Variable$userist konsistenter.vg
--
sanduhrs - drupalcenter
--------------------------------
http://erdfisch.de
Danke nochmal für Deine Hilfe.
am 30.09.2006 - 19:43 Uhr
Kennst Du Dich auch mit dem organic group modul aus?
Am besten machst Du dafür
am 30.09.2006 - 19:49 Uhr
Am besten machst Du dafür einen neuen thread auf.
vg
--
sanduhrs - drupalcenter
--------------------------------
http://erdfisch.de
Letzter Login im Block
am 24.02.2007 - 12:06 Uhr
Hi zusammen,
wollte den Code grad mal in einen Block integrieren, der auf der ProfilSeite eines Benutzers angezeigt werden soll.
<div class="fields">Letzter Login: <?php print (format_date($user->access, 'custom', 'd.m.y'));?></div>Aber die Ausgabe stimmt nicht: 01.01.70
Bin mir nicht sicher, ob der Code überhaupt einen / den richtigen Benutzer ausgibt.
Sieht mir nach einem StandartWert aus.
Ich muss dem Block doch irgendwie mitteilen, dass er das Datum des Benutzers ausgeben soll, dessen Profil gerade offen ist.
Das geht geht glaub ich mit
$userid = arg(1);hab ich irgendwo im Forum gelesen.Jemand `ne Idee?
Gruß
Helge
Hallo Helge, 1.1.1970 ist
am 28.03.2007 - 20:10 Uhr
Hallo Helge,
1.1.1970 ist das Datum zum "timestamp"=0, sprich dein Wert $user->access liefert als Ergebnis 0
Dies kann 2 Gründe haben:
1) in der Datenbank steht tatsächlich 0, was aber nicht zu erwarten ist
2) die Zuweisung der Variable passt nicht und er liefert 0 (Boolscher Wert, somit "Falsch" als "Fehler" zurück)
Da ich in Drupal recht neu bin, kann ich dir keinen kompletten Workarround geben, aber so viel sei gesagt: in $user stecken alle Infos zum derzeitig angemeldeten User. Somit sollte $user -> access auch den Zeitstempel fuer den letzten Login, des aktuell registrierten Users darstellen.
Somit meine Vermutung: entweder $user ist falsch, oder das access. Wass passiert denn, wenn du dir das als Text einfach mal ausgeben lässt? Steht dann da 0 oder tatsächlich ein ich glaube 7 stelliger Zahlenwert?
Re: Letzter Login im Block
am 28.03.2007 - 22:44 Uhr
<?php
// Aktueller Benutzer
global $user;
// Lade Profildaten
$profile = user_load(array('uid' => arg(1)));
// Ausgabe der letzten Anmeldung
print(format_date($profile->access, 'custom', 'd.m.y', $user->timezone));
?>
Gruss, Ralf
---
Ralf Stamm - drupalcenter
Komisch, jetzt funtzts
am 29.03.2007 - 11:44 Uhr
Servus zusammen,
habt vielen Dank für eure Antworten.
Habe gerade Ralf seinen Code ausprobiert.
Er funktioniert natürlich ;o)
Danach hatte ich mal meinen eigenen Code (s.o) ausprobiert und nun geht der auch.
Versteh ich nicht.
Als ob Ralf sein Script dem System beigebracht hätte, nun auch meinen Code zu akzeptieren.
Egal was passiert ist, es funzt jedenfalls.
Habt Dank,
ich wünsch Euch was!
Gruß
Helge
Hallo zusammen, folgender
am 23.10.2007 - 09:47 Uhr
Hallo zusammen,
folgender Code gibt mir das Datum des letzten Log in an:
<?php
// Aktueller Benutzer
global $user;
// Lade Profildaten
$profile = user_load(array('uid' => arg(1)));
// Ausgabe der letzten Anmeldung
print(format_date($profile->access, 'custom', 'd.m.y', $user->timezone));
?>
Würde jedoch gerne anzeigen wann der Account erstellt wurde (quasi seit wann man Mitglied ist). Der oben auf der Seite genannte Code funktioniert zwar, doch es erscheint bei Neuanmeldungen das Datum 01.01.70. Würde also gerne den hier stehenden Code anpassen da er prinzipiell funktioniert. Anstatt profile->access account->created führt jedoch nicht zu einer Lösung. Würde mich freuen wenn mir jemand einen Tipp geben könnte was ich eintragen muss.
Gruß, der Jenzen!
Das geht wie folgt
am 23.10.2007 - 10:49 Uhr
Hi ,
schau mal auf die Seite http://drupal.org/node/48554 dort wird es erklärt für user-profil.tpl.php
MfG
Michael Finger
Holztechniker
Danke!
am 23.10.2007 - 22:08 Uhr
Hi,
danke dir für den Link. Konnte den Fehler beheben und jetzt funktioniert die Ausgabe einwandfrei.
Gruß, der Jenzen!
Letzter Zugriff in Profile
am 09.12.2008 - 16:47 Uhr
Hallo zusammen,
ich würde mir gerne den Letzten Zugriff in den Profilen ausgeben lassen, aber irgendwie funzt das mit diesem code nicht*grübel
hat da jemand eine Idee warum nicht!?
habe den code in meine template.php eingefügt ich bekomme aber keine ausgabe!
für einen vorschlag wäre ich dankbar.
achso ich benutze drupal 6
Gruß
Janosch