Erstellen einer Userbar mit Piktogrammen
![](https://www.drupalcenter.de/files/imagecache/upic_mini/pictures/picture-8349.jpg)
am 01.06.2009 - 13:41 Uhr in
Hallo Drupal-User,
dies ist mein erster Beitrag hier. Ich selber bin Drupal-Anfänger und möchte mein erstes Projekt umsetzen, in dem es nach dem Einloggen eine Leiste geben soll, über die die wichtigsten Funktionen mit Piktogrammen erreicht werden soll:
- Eigenes Profil
- Mails
- Lesezeichen
- Kontakte
- Warenkorb
- Ausloggen
Diese Leiste könnte in etwa so aussehen:
Sobald sich in den verschiedenen Bereichen etwas ändert, soll sich auch das Piktogramm ändern.
Beispiele: Eine neue PM ist eingegangen, Neuer Kommentar zu einem Lesezeichen, neue Kontktanfrage, usw.
Das könnte dann in etwa so aussehen:
Als Ansatz bin ich über folgenden Codeschnipsel für die template.php gestolpert:
<?php
function phptemplate_user_bar() {
global $user;
$output = '';
if (!$user->uid) {
$output .= drupal_get_form('user_login_block');
}
else {
$output .= theme('item_list', array(
l(t('Inbox'), 'messages', array('title' => t('Your Mailbox'))),
l(t('Friends'), 'user/'.$user->uid.'/friends/pending', array('title' => t('Your buddies'))),
l(t('Favourites'), 'bookmarks', array('title' => t('Your Favourites'))),
l(t('Your account'), 'user/'.$user->uid, array('title' => t('Edit your account'))),
l(t('Sign out'), 'logout')));
}
$output = '<div id="user-bar">'.$output.'</div>';
return $output;
}
?>
Ziel wäre es jetzt die verschiedenen Stati der Module Flag, Flag Friend, Privatemsg und Ubercart abzurufen und endsprechend Piktogramm A (grau) oder Piktogramm B (farbig) anzuzeigen.
Für das Modul Privatemsg gibt es beispielsweise einen Codeschnipsel, der die Anzahl der neuen Nachrichten abfragt:
<?php
$num = privatemsg_unread_count();
?>
Leider bin ich auch im Bereich PHP nicht so fit, das ich dies vollständig lösen könnte.
Hat jemand eine Idee, wie man das angeht?
Vielen Dank für eure Hilfe.
Gruß,
Andreas
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo, ich würde hier
am 01.06.2009 - 15:10 Uhr
Hallo,
ich würde hier versuchen bereits vorhandene Drupalelemente zu nutzen. So könnte man eine neue Region definieren und dann ein entsprechendes Menu anlegen, welches dann per block-deinmenu.tpl.php (z.B.) anzupassen ist. Diese Menu kann dann einfach in die neue Region gesetzt werden (page.tpl.php).
Das ermöglicht es Sichtbarkeiten für dieses Menu bequem in den Blockeinstellungen zu konfigurieren ebenso kann man dann die Links im Nachhinein einfacher anpassen.
Hallo, ich würde hier
am 01.06.2009 - 15:10 Uhr
Hallo,
ich würde hier versuchen bereits vorhandene Drupalelemente zu nutzen. So könnte man eine neue Region definieren und dann ein entsprechendes Menu anlegen, welches dann per block-deinmenu.tpl.php (z.B.) anzupassen ist. Diese Menu kann dann einfach in die neue Region gesetzt werden (page.tpl.php).
Das ermöglicht es Sichtbarkeiten für dieses Menu bequem in den Blockeinstellungen zu konfigurieren ebenso kann man dann die Links im Nachhinein einfacher anpassen.
Danke für Deinen Hinweis,
am 01.06.2009 - 15:22 Uhr
Danke für Deinen Hinweis.
Mein Problem ist eher die Status-Abfrage der diversen Module und die dazugehörige Anzeige des richtigen Icons mit entsprechendem Link.
Gruß,
Andreas
Ja das kann je nach Modul
am 02.06.2009 - 07:26 Uhr
Ja das kann je nach Modul etwas schwieriger werden. Die Links zum Profil und für das Ausloggen sollten kein Problem sein, bei den anderen Sachen muss man schauen welche Funktionen das Modul besitzt. Diese Funktionen kann man dann im Template des Menu Blocks abfragen und dann das entsprechnde Icon darstellen.
Falls es keine passende Fkt. im Modul gibt, welche z.B. ausgibt ob neue Kontaktanfragen anliegen, dann kann man solche Funktionen selber schreiben. Sowas kann man dann als Funktion in die template.php des Templates setzen oder glaich als eingenes Modul implementieren und dort evt. gleich andere Helferfkt. einbinden.
Welche Module verwendest du für Kontakte, Nachrichten und Bookmarks?
Hallo dynamiser, ja, ein
am 02.06.2009 - 07:39 Uhr
Hallo dynamiser,
ja, ein neues Modul würde sich hier sicherlich anbieten, nur bin ich noch nicht soweit, das ich das selber könnte.
Für Kontakte nutze ich: http://drupal.org/project/flag_friend
Für Bookmarks: http://drupal.org/project/flag
Für Nachrichten: http://drupal.org/project/privatemsg
Für den Onlineshop: http://drupal.org/project/ubercart
Hast Du eine Idee? Mein Problem ist, das ich die Ausgabe der Links als Array in dem BeispielCode schon nicht so nachvollziehen kann.
Gruß,
Andreas
Ein kleines Helfermodul
am 02.06.2009 - 08:22 Uhr
Ein kleines Helfermodul anlegen ist keine große Hürde, da gibt es viele Tutorials. Diesem neuen Modul dann einfach die benötigten Funktionen implementieren.
Ich hatte kürzlich das gleiche Problem, ein Usermenü mit entsprechnder Anzeige neuer Nachrichten usw..
Es ist natürlich immer besser zuerst genau zu prüfen ob das entsprechnde Modul bereits eine Fkt. besitzt, welche die Informationen liefert, die gebraucht werden.
Bei "privatemsg" ist das z.B. der Fall, hier kann man "privatemsg_unread_count()" nutzen um die Anzahl neuer nachrichten für den momentan angemeldeten Nutzer zu erhalten.
Diese Fkt. kannst du dann einfach im Template des Menüs nutzen.
Für die anderen Module sollte man auch erstmal suchen was da schon vorhanden ist.
Wenn du es so machen willst wie in deinem Bsp. dann spielt sich alles in der template.php ab.
Die Links werden dort mit der drupal-Fkt. "theme" erzeugt. Diese erzeugt einen Itemlist also ein html List Konstrukt mit Links. Es wird dort ein Array übergeben, welches je Eintrag wieder ein Array enthält. Dieses enthält dann den Linknamen, URL und bei Bedarf ein Array mit weiteren Parametern (z.b. 'html' um html in den Links zu verwenden). Dazu einfach mal hier suchen, das wurde bestimmt schonmal besser erläutert.
Ich hoffe das hilft dir erstmal weiter.