Farbige Rollen/Usernamen
am 18.12.2009 - 09:54 Uhr in
Guten Morgen auch!
Ich habe heute am frühen Morgen schon auf drupal.org und drupalmodules gesucht, konnte aber nichts finden. Eventuell hat ein entsprechendes Modul aber auch nur wieder einen "komischen" Namen.
Was ich suche ist ein Modul mit dem ich entweder einer bestimmten Rolle eine Farbe zuweisen kann, so das die Namen der User dieser Gruppe die entsprechende Farbe haben, bzw. deren Namen, oder aber ein Modul mit dem ich das zumindest per User festlegen kann.
Ich habe schon geschaut, aber "leider" werden Usern, oder Rollen keine eigenen Klassen zugewiesen. Ich habe gelesen das man das auch über die template.php überschreiben können soll, aber konnte keinen Snippet finden und auskennen tue ich mich da auch nicht.
Ich arbeite derzeit an einer Community/Netzwerkseite und dort sollten Admin und Teammitglieder auch als solche zu erkennen sein.
Ich bedanke mich für etwaige Tipps im Voraus!
Beste Grüße vom,
Genesis
- Anmelden oder Registrieren um Kommentare zu schreiben
theme_username
am 18.12.2009 - 10:55 Uhr
In Deiner template.php überschreibst Du die Funktion theme_username (siehe unten).
Was machst Du, wenn ein Benutzer in mehrere Rollen eingetragen ist?
<?php
$class = '';
function phptemplate_username($object) {
if ($object->uid && $object->name) {
// Shorten the name when it is too long or it will break many tables.
if (drupal_strlen($object->name) > 20) {
$name = drupal_substr($object->name, 0, 15) .'...';
}
else {
$name = $object->name;
}
if (user_access('access user profiles')) {
$output = l($name, 'user/'. $object->uid, array('attributes' => array('title' => t('View user profile.'))));
}
else {
$output = check_plain($name);
}
}
else if ($object->name) {
// Sometimes modules display content composed by people who are
// not registered members of the site (e.g. mailing list or news
// aggregator modules). This clause enables modules to display
// the true author of the content.
if (!empty($object->homepage)) {
$output = l($object->name, $object->homepage, array('attributes' => array('rel' => 'nofollow')));
}
else {
$output = check_plain($object->name);
}
$output .= ' ('. t('not verified') .')';
}
else {
$output = check_plain(variable_get('anonymous', t('Anonymous')));
}
foreach ($object->roles as $role) {
$class = strtr(strtolower($role), array(' ', 'ä', 'ü', 'ö', 'ß'), '-');
}
if (strlen($class)) {
$output = '<span class="' . $class . '">' . $output . '</span>';
}
return $output;
?>
hth,
Stefan
--
Sei nett zu Deinem Themer!
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hallo Stefan, schon mal
am 18.12.2009 - 11:15 Uhr
Hallo Stefan,
schon mal vielen Dank bis hierher. Damit konnte ich schon mal ein anderes Problem lösen, das der zu langen Usernamen. :)
Jedoch ist mir noch nicht klar wie ich nun einer Rolle, oder einem Usernamen eine Farbe, bzw. CSS_Klasse zuweisen kann. Bzw. mir ist das schon irgendwie klar, allerdings bin ich kein PHPler, weswegen mir die Ausarbeitung doch recht schwer fällt. Eventuell kannst du, oder jemand anderes mir da ja noch einen Hinweis geben.
Das ein User 2 Rollen hat wird nicht vorkommen. Es gibt nur 3 Rollen wovon 2 "Hand verlesen" an nur wenige Leute vergeben werden.
Danke schon mal erneut im Voraus. :)
Grüße vom,
Genesis
theme_username
am 18.12.2009 - 11:19 Uhr
Jedoch ist mir noch nicht klar wie ich nun einer Rolle, oder einem Usernamen eine Farbe, bzw. CSS_Klasse zuweisen kann.
Das von mir gezeigte Skript gibt den Benutzernamen in der Form
<span class="authenticated-user">Nutzername</span>
aus.Somit ist die Klasse automatisch drin.
Du musst dieser Klasse jetzt nur noch per CSS eine Farbe zuordnen.
hth,
Stefan
--
Sei nett zu Deinem Themer!
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Huhu, tut mir leid wenn ich
am 18.12.2009 - 11:30 Uhr
Huhu,
tut mir leid wenn ich mich gerade dümmer anstelle als ich vllt bin (oder vllt auch nicht).
Step by Step:
Ich habe eine Rolle die sich nun mal "testrolle" nennt.
Nun weise ich dem ganzen per css z.B. zu
.testrolle {
color:#fff;
}
Nun sollten alle User die diese Rolle inne haben (und zwar nur diese) entsprechend einen weißen Namen haben?
Das habe ich versucht, aber es passiert nichts. Ich kann den "span" auch nicht im Code finden wenn ich mir entsprechend den Quellcode ansehe.
Oder mache ich irgend etwas falsch?
Danke noch mal und entschuldige wenn ich grad nur den Wald sehe. :/
Grüße vom,
Genesis
Cache leeren
am 18.12.2009 - 11:32 Uhr
Du musst den Theme cache leeren, damit die neue Theme-Funktion im System bekannt ist.
Stefan
--
Sei nett zu Deinem Themer!
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Aber das wäre für Drupal
am 18.12.2009 - 11:35 Uhr
Aber das wäre für Drupal 6, wir sprechen hier ja von Drupal 5. Da das Theme, bzw. die Seite noch in der Entwicklung ist habe ich den Cache auch noch nicht aktiviert.
Tut mir leid falls ich grad nerve. :/