Username in Menü integrieren
Eingetragen von Woko (38)
am 31.10.2007 - 17:43 Uhr in
am 31.10.2007 - 17:43 Uhr in
Hallo,
kann mir jemand dabei helfen, den Usernamen in das Menü einzubauen?
Das Hauptmenü heißt bespw. "Navigation" und ich würde es gerne "Toms Navigation" nennen, wobei "Tom" der jeweilige Username ist.
Danke für jeden Tipp.
- Anmelden oder Registrieren um Kommentare zu schreiben
Sobald man eingeloggt ist
am 01.11.2007 - 11:19 Uhr
Sobald man eingeloggt ist heisst doch "Navigation" -> Benutzername
gruß pebosi
gruß pebosi
--
https://pebosi.net
Zitat:ich würde es gerne
am 01.11.2007 - 12:10 Uhr
ich würde es gerne "Toms Navigation" nennen
Die Navigation ist ein Block und dem kannst Du ein Template verpassen. Im Block-Template kannst Du den Blocktitel wie gewollt veraendern.
Kann man Blöcke themen? http://www.drupalcenter.de/faq/5149
Loggt sich ein User ein dann hast Du im Div die
<div id="block-user-1" class="clear-block block block-user">
Bezugnehmend auf den FAQ-Link koennte in der "block.tpl.php" der Sprung zum Template so aussehen:
if ( $block->module == 'user' && $block->delta == '1' ) {
include 'block-usermenu.tpl.php';
return;
}
Wobei "block-usermenu.tpl.php" Deine Block-Template-Datei ist.
Das Template hat dann folgenden Inhalt:
<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="clear-block block block-<?php print $block->module ?>">
<?php if ($block->subject): ?>
<h3><?php print $user->name.''s' t('navigation'); ?></h3>
<?php endif;?>
<div class="content"><?php print $block->content ?></div>
</div>
Mehr Infos auch unter: http://www.drupalcenter.de/handbuch/4291
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Fehlermeldung
am 04.11.2007 - 02:51 Uhr
Ich habe die Schritte ausgeführt, erhalte aber die Fehlermeldung "unexpected T_STRING" ...
Ist es richtig, dass ich die tpl-Dateien im Theme-Verzeichnis ablege (hier: Garland)?
Muss ich am Code noch etwas anpassen, resp. stimmt er so, wie oben für die block-usermenu.tpl.php beschrieben?
Fehler: habe Punkt im Code vergessen
am 04.11.2007 - 03:02 Uhr
Ist es richtig, dass ich die tpl-Dateien im Theme-Verzeichnis ablege (hier: Garland)?
Korrekt.
Ich habe die Schritte ausgeführt, erhalte aber die Fehlermeldung "unexpected T_STRING" ...
Der Fehler liegt bei mir. Bitte verwende diesen Code:
<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="clear-block block block-<?php print $block->module ?>">
<?php if ($block->subject): ?>
<h3><?php print $user->name.''s'.t('navigation'); ?></h3>
<?php endif;?>
<div class="content"><?php print $block->content ?></div>
</div>
Ich habe einen Punkt vergessen. In der Zeile
<h3><?php print $user->name.''s'.t('navigation'); ?></h3>
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
tappe im dunkeln
am 07.11.2007 - 12:51 Uhr
Hallo quiptime,
vielen Dank für die bisherige Hilfe, aber es funktioniert immer noch nicht... unexpected T-String. Ohne php zu koennen, habe ich das "s' im Verdacht, der Fehler zu erzeugen: Zwei Hochkomma oder ein Gänsefüßchen (Shift 2)?. Wenn ich das weglasse, gibt er mir wenigstens 'navigation' aus, aber nicht den Username, an dem hängts. Weitere Info: Ich beziehe mich nicht auf das Standard-, sondern auf ein eigenes Menu:
<?php
if ( $block->module == 'menu' && $block->delta == '89' ) {
include 'block-usermenu.tpl.php';
return;
}
?>
Funktioniert ja, wie 'navigation' zeigt. Was läuft schief?
1000dank,
Woko
Jemand ne Idee?
am 17.11.2007 - 20:41 Uhr
Ich komme nicht weiter. Hat jemand eine Idee?
Tasten
am 17.11.2007 - 21:16 Uhr
<?php print $user->name ?>
So würde ich mich da mal herantasten. Dann:
<?php print $user->name ."'s Navigation" ?>
im zweiten Schritt, wenn der erste funktioniert. Schließlich:
<?php print $user->name ."'s ". t('navigation') ?>
für's multilinguale Gemüt.
Verdammt, aller Dinge sind meist 3
am 17.11.2007 - 21:32 Uhr
Verdammt, aller Dinge sind meist 3.
<h3><?php print $user->name.''s'.t('navigation'); ?></h3>
Hat immer noch einen PHP Fehler und kann so nicht funktionieren. Das Syntax Highlighting zeigt es eigentlich schon an.
<h3><?php print $user->name.'s '.t('navigation'); ?></h3>
ist nun ohne Fehler.
Nachtrag
Die 2 einfachen Hochkomma vor dem s sind eigentlich richtig aber PHP stolpert darueber. In diesem Fall muss man wie bereits gerade gesagt das s mit doppelten Hochkommas umschliessen. Damit interpretiert PHP den dazwischen befindlichen Code als HTML Code und man kann vor dem s das benoetigte ' verwenden um User's Navigation zu erhalten.
Generell sollte man aber HTML Code in PHP-Strings mit einfachen Hochkommas umschliessen. Das hat Performancegruende.
------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
immer noch nicht
am 18.11.2007 - 00:28 Uhr
Danke für die Hilfe.
Die zweite Hälfte funktioniert, sprich es wird "s navigation" angezeigt. Aber auch nur das.
Der vordere Teil mit $user->name funktioniert nicht; der Username wird nicht dargestellt.
Muss ich im Menü evtl. eine weitere Einstellung vornehmen oder in der block.tpl.php?
Globaler User
am 18.11.2007 - 00:54 Uhr
<?php
global $user;
?>
fehlt noch vor der print-Anweisung.
Super
am 18.11.2007 - 22:17 Uhr
Vielen vielen Dank, jetzt gehts.
Hier nochmal für alle der zentrale Teil in der block-usermenu.tpl.php:
<?php
if ($block->subject):
?>
<?php
global $user;
?>
<?php
print $user->name.'s '.t('navigation');
?>
<?php
endif;
?>
Folgeproblem
am 19.11.2007 - 20:39 Uhr
Hi,
mit der Lösung, dass der Username in die Naviagtion integriert ist, habe ich mir offensichtlich das Problem eingehandelt, dass die sonstigen Blocktitel nicht mehr dargestellt werden. Was kann man da tun?
Grüße,
woko
Menüs
am 19.11.2007 - 21:06 Uhr
Sind die anderen Blöcke Menüs? Haben die auch wirklich ein $subject ?
Desweiteren:
Bezugnehmend auf den FAQ-Link koennte in der "block.tpl.php" der Sprung zum Template so aussehen:
<?php
if ( $block->module == 'user' && $block->delta == '1' ) {
include 'block-usermenu.tpl.php';
return;
}
?>
Wobei "block-usermenu.tpl.php" Deine Block-Template-Datei ist.
Was gibt denn das $delta für Deinen Block im HTML-Quelltext aus und wie lautet genau Deine Bedingung in block.tpl.php für das Include? Vielleicht hast Du da noch mehr menu blocks und Deine neue Version erwischt sie alle?
kein $delta
am 20.11.2007 - 21:30 Uhr
Es gibt kein $delta, aber dies hier im Quelltext unmittelbar über der Navigation:
div id="block-menu-89" class="clear-block block block-menu"
Das hab ich in der block.tpl.php so zu lösen versucht:
<?php
if ( $block->module == 'menu' && $block->delta == '89' ) {
include 'block-usermenu.tpl.php';
return;
}
?>
Die anderen Blocks sind keine Menüs, haben aber Titel, die ich unter admin/build/block vergeben habe. Der richtige Ort?
Was ist das Blockdelta - wie erkenne ich es?
am 20.11.2007 - 21:58 Uhr
@Woko,
was ist das Delta?
In der "block.tpl.php" wird folgendes ausgegeben:
<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="clear-block block block-<?php print $block->module ?>">
In dieser Zeile wird das Delta ausgegeben mit
$block->delta
. Davor wird ein - ausgegeben. Wiederum davor wird "module" ausgegeben. Und nochmals davor wird "block-" ausgegeben.Ich setze das nun mal zusammen:
block-module-block->delta
Ich fasse dies kürzer:
block-module-delta
Es geht im Block um ein Menü. Also ist module = menu
Und nun vergleiche mal das was als HTML Code im Block steht mit dem < - > was in "block.tpl.php" steht.
id="block-menu-89" < - > block-module-block->delta
Jetzt kannst Du selbst sagen was das Delta ist. Oder?
-----------------------------------------------------------------------
Im HTML Code des Blockes stehen immer 3 id Parameter. Diese sind jeweils mit einem Bindestrich voneinander getrennt.
Also: param-param-param
Der 3. Parameter ist das Blockdelta. Aber Achtung. Das Delta ist nicht immer eine Ziffer. Es kann auch ein Text sein.
Das was nach dem 2. Bindestrich steht ist immer das Blockdelta.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Ja, und noch eines, bevor
am 20.11.2007 - 22:25 Uhr
Ja, und noch eines, bevor alle vielleicht in die falsche Richtung marschieren: Deine Blöcke ohne Titel haben alle ihr
$block->subject
im jeweiligen Config-Formular für den Block eingetragen? Wird das h3-Tag im HTML ausgegeben? - Ich frage ja nur, weil die block.tpl.php eben dies enthält:<?php if ($block->subject): ?><h3>Blocktitel</h3>
...ok
am 20.11.2007 - 23:26 Uhr
Ich habs jetzt im Griff, denke ich.
Vielen Dank für die ausdauernde Hilfe; ich hab viel gelernt.
Geizig?
am 21.11.2007 - 12:30 Uhr
Ich habs jetzt im Griff, denke ich.
Vielen Dank für die ausdauernde Hilfe; ich hab viel gelernt.
Lass uns an Deinen Erkenntnissen teihaben, bitte. Wir sind an Erfahrungszuwachs interessiert. Und diesen enthältst Du uns mit so einem abrupten Thread-Ende vor – interessant ist für die Allgemeinheit, wie Du es in den Griff bekommen hast.