Username in page.tpl.php
am 10.11.2007 - 19:28 Uhr in
Hallo,
ich möchte gerne den Benutzernamen auf jeder Seite anzeigen, leider hab ich nirgends eine Lösung dafür gefunden.
Ich hab es so versucht:
Diese Funktion in template.php:
<?php
function phptemplate_user_welcome() {
global $user;
if ($user->userid)
return 'Hallo, <a href="user/'.$user->userid.'">'.$user->username.'</a>.';
else
return 'Sie sind nicht angemeldet.';
}
?>So rufe ich das ganze auf:
<?php
print phptemplate_user_welcome();
?>Leider wird mir immer 'Sie sind nicht angemeldet.' angezeigt, woran kann das liegen?
tia,
Stoke
- Anmelden oder Registrieren um Kommentare zu schreiben

else ist erfuellt
am 10.11.2007 - 19:38 Uhr
Leider wird mir immer 'Sie sind nicht angemeldet.' angezeigt, woran kann das liegen?
Das liegt daran weil bei der Abfrage else zutrifft.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Das ist mir klar ;)
am 10.11.2007 - 19:49 Uhr
Das ist mir klar ;)
Nur heißt dass dass userid false ist, somit nicht eingelogt.
Wenn ich aber eingelogt bin, müsste ich 1 haben, also true.
Wenn ich nur $user->username ausgebe kommt gar nix.
Ich habe aber irgendwo gelesen dass man von template.php auf die $user Variable zugreifen kann, deshalb wundere ich mich wieso das nicht geht :(
Gibts da nen Trick?
/edit:
Ich habe mich wohl ungünstig ausgedrückt, sorry.
Mein Problem ist nicht PHP, sondern wie ich an die Variable $user komm :)
Ich kenn mich leider mit der template engine nicht aus :/
;-) Naja, mit global $user
am 10.11.2007 - 20:32 Uhr
;-)
Naja, mit global $user kommst Du an die Variable nicht ran. Vermutlich hast Du es auch schon ohne global versucht?
An welcher Stelle / zu welchem Zeitpunkt willst Du den User begruessen? Soll das "Welcome" immer zu sehen sein?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Was kommt raus wenn du
am 10.11.2007 - 20:37 Uhr
Was kommt raus wenn du print_r($user) irgendwo im template drin machst?
___________________________
it's easier than you think
Raphael Schär
http://www.schaerwebdesign.ch
Facebook Gruppe Schweiz-CH: http://www.facebook.com/group.php?gid=5683015414
Naja, ohne global kanns
am 10.11.2007 - 21:02 Uhr
Naja, ohne global kanns nicht gehn.
Dieser Willkommenstext soll im header stehn, also auf jeder Seite.
Wenn ich print_r() mach kommt auch nix.
Welche Datei includet denn die template.php?
Ich müsste dort $user definieren, dann sollte es gehn.
Aber ich denk es geht auch irgendwie anders, bei Drupal braucht man ja anscheinend keine andere Datei als die template.php zu bearbeiten :)
Problem geloest: $user->uid und $user->name
am 10.11.2007 - 23:33 Uhr
<?php
function user_welcome() {
global $user;
if ($user->uid) {
return 'Hallo, <a href="user/'.$user->uid.'">'.$user->name.'</a>.';
} else {
return 'Sie sind nicht angemeldet.';
}
}
?>
Der Wald und die Baeume. :-)
Ich habe es eben getestet. Die Funktion in die "template.php" und in der "page.tpl.php"
print user_welcome();PS
Nenne die Funktion nicht phptemplate_user_welcome()
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Danke !!
am 11.11.2007 - 12:30 Uhr
Danke, jetzt funktionierts :)
Die Variable für den Namen lautet übrigens $user->name.
Ich hab irgendwo von den beiden Variablen $user->userid und $user->username gelesen, war natürlich blöd dass ich das einfach so übernommen habe und nicht überprüft ob die überhaupt existieren.
Wieso soll ich die Funktion nicht phptemplate_xx() nennen? Gibts da nen bestimmten Grund dafür?
Ich hab mich einfach ans Namensschema der anderen Funktionen gehalten, die beginnen ja alle so.
template.php - was geht?
am 11.11.2007 - 13:11 Uhr
Ich hab mich einfach ans Namensschema der anderen Funktionen gehalten, die beginnen ja alle so.
Die anderen Funktionen, die da so beginnen, sind Funktionen zur Realisierung eines Template. In diesem Zusammenhang gibt es allerdings Namenskonventionen. Zum Einen durch die Templateengine und zum Anderen durch die jeweils zu Grunde liegende Theme-Funktion.
Ganz Allgemein.
In die "template.php" kann man Funktionen reinpacken wie man will und sie auch benennen wie man will. Oft ist eine kleine Funktion in der "template.php" der einfachere Weg gegenueber einem eigenen Modul.
Im Beispielfall Deiner Aufgabe "User Welcome" kann die Sache auch nur ueber die "template.php" realisiert werden. Denn in der "page.tpl.php" bekommt man die Variable $user nicht "gefuellt".
In der "template.php" sollte man auch alle Drupalfunktionen ansprechen koennen ohne irgendwas zu includen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
$user->name
am 11.11.2007 - 13:15 Uhr
Die Variable für den Namen lautet übrigens $user->name.
Hatte ich bereits so gepostet:
return 'Hallo, <a href="user/'.$user->uid.'">'.$user->name.'</a>.';-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Ah, hab ich wohl überlesen
am 11.11.2007 - 13:31 Uhr
Ah, hab ich wohl überlesen ^^
Ergo: Genauer lesen spart einem viel Zeit beim ausprobieren :)
Danke dir :)