[gelöst] Benutzerrolle im Profil anzeigen
am 08.08.2010 - 12:13 Uhr in
Hallo zusammen!
Irgendwie bin ich (noch) nicht fündig geworden. Ich suche eine Möglichkeit, anhand bestimmter Rollen (Standard, geprüftes Mitglied) dieses im Profil in der Form "Ist ein Standardmitglied" bzw "Ist ein geprüftes Mitglied" anzeigen zu lassen.
Daher meine Frage, wie ich an die Variable komme, welche mir die Rolle angibt, welche ein User hat.
Etwas konfus ausgedrückt.. ich weiß... merke ich gerade selber. Also nochmal:
Wenn User ein geprüftes Mitglied ist, dann zeige den Text "Ist ein geprüftes Mitglied" an. Ansonsten zeige "Ist ein Standardmitglied" an.
Ich verwende auch mittlerweile eine eigene user-profile.tpl.php Datei. Allerdings alles in der lokalen Testumgebung, um die laufende Seite nicht zu belasten mit Fehlversuchen.
Mir ist klar, daß die Lösung direkt vor meinen Augen liegt... nur wenn man die Ausgabe von Variablen und deren Aufbau (insbesondere Arrays) nicht kennt, sucht man sich echt blöde.
Vielen Dank schonmal für den entsprechenden Hinweis!
Gruß
Rainer
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo Rainer, Du kannst Dir
am 09.08.2010 - 12:35 Uhr
Hallo Rainer,
Du kannst Dir doch die Arrays mittels
<?php
print_r($meinArray)
?>
Dein problem könntest Du aber auch mit Views lösen: Eine Views erstellen, als Argument "Benutzer ID" auswählen, dort dann "Standardargumente zur Verfügung stellen" ebenfalls dort dann "Benutzer ID aus der URL" auswählen und dann den Filter auf Rolle setzen. Wenn Rolle = XY dann als Feld einen Text ausgeben. Dies dann Analog zu allen Rollen, die Du abfangen willst.
Die ganze View kannst Du dann als Block ausgeben und irgendwo in Deinem User-Profil anzeigen.
Beste Grüße,
Niko
Kommune3 - Drupal Entwickler aus dem Ruhrgebiets
Ein guter Hinweis!
am 09.08.2010 - 17:56 Uhr
Hallo Niko,
erst einmal vielen Dank für Deine Antwort. Als "immer noch Anfänger" habe ich natürlich auch noch die eine oder andere Frage auf dem Herzen. Diese Funktion print_r ($arraysowieso) müsste welches Array beinhalten? Es wird ja wohl kaum $meinArray sein.
Aber auch die Sache mit den Views... immer noch sehr geheimnisvoll. Insbesondere die Ausgabe als Block. Wie schaffe ich das, wenn ich eine eigene profile-template.tpl.php habe und auch generell ohne eigenes Template zum besseren Verständnis!? Diese Standardansicht der Profile ist ja mehr als grauenvoll und fördert Augenkrebs in höchstem Maße.
Wenn ich das so überdenke, mit dem eigenen Template, sollte doch auch kein View nötig sein. Müsste halte nur wissen, welches Array dafür zuständig ist. Ich glaube, hier schlägt die e107-Gewohnheit wieder durch, alles im Code selber unterzubringen.
Nebenbei muss ich aber sagen, daß es echt interessant ist, die vielen Möglichkeiten von Drupal zu erkunden und zu nutzen. Manche Wege sind auf den ersten Blick zwar etwas sonderbar... aber wenn man die Philosophie von Drupal beachtet, macht es ja durchaus wieder Sinn (Never change the Core).
In der user-profile.tpl.php
am 09.08.2010 - 21:11 Uhr
In der user-profile.tpl.php hast du unter anderem Zugriff auf $account. Das ist ein Benutzer-Objekt wie $user. Allerdings enthält $user immer die Daten des handelnden Benutzers, während $account in diesem Fall die Daten des Benutzers enthält, dessen Profil betrachtet wird.
Ruft man also das Profil von Benutzer 123 auf, würde $account->uid den Wert '123' enthalten.
Und in diesem User-Object ist ein Array für alle Benutzerrollen untergebracht, die dieser Account inne hat. Darauf greift man über $account->roles zu.
Das Array ist so aufgebaut: $account->roles['Role-ID'] == 'Role-Bezeichnung'
Also enthält $account->roles['2'] den Wert "authenticated user" usw.
Damit kannst du also Problemlos die Rollen des Benutzers auslesen und diese in der user-profile.tpl.php ausgeben.
Gib in deine user-profile.tpl.php z.B. mal folgendes ein:
<?php
drupal_set_message('<pre>' . print_r($account, 1) . '</pre>');
?>
Damit werden dir alle Werte im $account-Object angezeigt.
Oder noch besser (meiner Meinung nach):
Installiere dir das Modul Devel und dann gib folgendes in die user-profile.tpl.php ein:
<?php
krumo($account);
?>
Damit bekommt man ein schön übersichtliches Fenster ausgegeben, welches man mit einem Klick öffnen und schließen kann. Man bekommt für jeden im Object enthaltenen Wert angezeigt, was für einen Typ es hat und wenn es sich um ein Array o.Ä. handelt, wieviele Werte darin enthalten sind. So steht z.B. "roles (Array, 4 elements)" dann weißt du, dass "roles" ein Array ist, dass man es also mit dem Index ansprechen muss usw. Sehr schön zu bedienen, meiner Meinung nach und sehr hilfreich, weil man sich damit jedes beliebige Array oder Object schön gegliedert ausgeben kann. Super Sache ;-)
Ich bin begeistert!
am 10.08.2010 - 17:16 Uhr
Also das nenne ich doch mal eine klasse Hilfestellung!
So bekomme ich doch exakt die Infos, welche ich benötige, um die Profile nach meinen/unseren Vorstellungen zu gestalten. Da werde ich doch gleich mal checken, was so alles machbar ist.
Gibt es nicht evtl auch eine Erweiterung für FireFox, womit man alles Mögliche je nach Auswahl (php Fehler, mysql querys usw) angezeigt bekommt? Wäre doch eine tolle Sache.
Jetzt geht es ans Eingemachte. Und vom Prinzip her fehlt mir jetzt noch eine Eingabemaske für ein... na nennen wir es mal "Neigungsbarometer". Einen Screenshot dessen hatte ich ja schon woanders eingestellt. Wenn ich das alles wieder in Kombination hinbekomme, ist ein Großteil geschafft.
Falls wer irgendwie Zeit und Lust hat, sich im Projekt einbringen zu wollen (rein technischer Natur), bin ich gerne ansprechbar!
Zitat: Gibt es nicht evtl
am 10.08.2010 - 18:00 Uhr
Gibt es nicht evtl auch eine Erweiterung für FireFox, womit man alles Mögliche je nach Auswahl (php Fehler, mysql querys usw) angezeigt bekommt?
Also ich kenne nur Firebug, aber das sagt dir nichts über PHP, soweit ich weiß. Wüsste auch nicht so recht, wie das ginge. Denn der Server verarbeitet die PHP-Scripte und gibt dann HTML-Code zurück, ich wüsste nicht, wie Firebug da an PHP, Arrays etc. rankommen sollte.
Aber schau dich mal ein wenig bzgl. Devel (habe ich oben schon verlinkt) um, damit kannst du dir z.B. alle MySQL-Querys ausgeben lassen, die an der darzustellenden Seite beteiligt waren usw.
Exterior schrieb Zitat: Gibt
am 10.08.2010 - 18:10 Uhr
Gibt es nicht evtl auch eine Erweiterung für FireFox, womit man alles Mögliche je nach Auswahl (php Fehler, mysql querys usw) angezeigt bekommt?
Also ich kenne nur Firebug, aber das sagt dir nichts über PHP, soweit ich weiß. Wüsste auch nicht so recht, wie das ginge. Denn der Server verarbeitet die PHP-Scripte und gibt dann HTML-Code zurück, ich wüsste nicht, wie Firebug da an PHP, Arrays etc. rankommen sollte.
Aber schau dich mal ein wenig bzgl. Devel (habe ich oben schon verlinkt) um, damit kannst du dir z.B. alle MySQL-Querys ausgeben lassen, die an der darzustellenden Seite beteiligt waren usw.
Devel entspricht schon sehr genau dem e107Debugger, welcher sich in FireFox integrieren lässt. Also vom Prinzip her das Pendant dazu. Werde mich mal näher damit befassen, da es doch so manchen Irrläufer zu verhindern hilft. Sorry, wenn ich noch manchmal einen Vergleich ziehe. Es ist eben die Macht der Gewohnheit, die in einem steckt.
Bin schon mit der Anzeige einen guten Schritt weiter gekommen. Abgesehen vom Theming für das Profil (und auch die gesamte Seite), welches nochmal auf einem ganz anderen Blatt steht und hier nicht zur Diskussion steht.