![]() |
Willkommen, Gast ( Anmelden | Registrierung )
![]() |
![]()
Beitrag
#1
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
Hi,
ich suche schon geraume Zeit, kann mich aber nicht mehr erinnern, in welchem Zusammenhang die Lösung hier auftauchte. Ich möchte in einem Navigationsmenu (welches ich mit Includes eingebunden habe) den gerade aktiven Menupunkt per CSS optisch hervorheben. Mit PHP an sich kein Problem, wird aber vom entsprechenden WebSpace nicht unterstützt. Das Problem hatten wir hier schon mal und es gab eine verblüffende Lösung in CSS. Ich werd' verrückt, aber ich finde den Thread nicht mehr. Hat da vielleicht zufällig jemand ein Bookmark drauf? ![]() ![]() ![]() Grüße Andreas |
|
|
![]() |
![]()
Beitrag
#2
|
|
is getting harder Gruppe: User Beiträge: 11 Mitglied seit: 11.04.2007 Mitglieds-Nr.: 6.770 ![]() |
Super, Herzlichen Dank besonders auch für die prägnante Erklärung!
Umfärben funktioniert nun auch im Nav-Bereich - zumindest bei manuell entsprechend verändertem Link. Nur das script funktioniert noch nicht ganz korrekt - es erkennt nicht wie gewünscht auf welcher Seite man ist -zumindest gibt es nie die passende Link manipulation aus (bei Quelltext-Anzeige im Browser erkennbar) Die automatische Link-Erstellung funktioniert wunderbar. weis jemand Rat ? Ist die Syntax des Scripts zur Abfrage der aktuellen Seite so def korrekt? Der Beitrag wurde von HPVD bearbeitet: 15.04.2007 - 19:25 |
|
|
![]()
Beitrag
#3
|
|
Nachschlagewerk des Orakels ![]() Gruppe: Mods Beiträge: 955 Mitglied seit: 29.08.2006 Wohnort: Frankfurt am Main Mitglieds-Nr.: 6.217 ![]() |
Lass dir mal anzeigen, was mit
HTML <?php ausgegeben wird und ob das jeweils mit einem der Indizes des Arrays übereinstimmt.
echo basename($_SERVER['PHP_SELF']); ?> |
|
|
![]()
Beitrag
#4
|
|
Anwärter auf W3.org Mitgliedschaft ![]() ![]() ![]() ![]() ![]() Gruppe: User Beiträge: 550 Mitglied seit: 28.11.2001 Wohnort: Berlin Friedrichshain Mitglieds-Nr.: 107 ![]() |
Lass dir mal anzeigen, was mit HTML <?php ausgegeben wird und ob das jeweils mit einem der Indizes des Arrays übereinstimmt.echo basename($_SERVER['PHP_SELF']); ?> Eine Anmerkung und ein Trick: Anmerkung: $_SERVER["PHP_SELF"] soll manipulierbar sein (habe ich gelesen, ohne es beweisen zu können), daher kann man als Alternative $_SERVER["SCRIPT_NAME"] nehmen. Trick: Um ein auf diese Art erzeugtes Menü in jeder Verzeichnisebene verwenden zu können, sollte die Notation verändert werden. Als Beispiel nehme ich mal Andreas' Menü und verteile ein paar Seiten in Unterverzeichnisse. Die Startseite und die Anfahrtsbeschreibung liegen im Wurzelverzeichnis der Website (per PHP mit $_SERVER["DOCUMENT_ROOT"] zu ermitteln, normalerweise das Verzeichnis in dem die Startseite liegt.), die Seite mit dem Kontaktformular und das Impressum liegen im Unterverzeicnis "kontakt". Außerdem ist es mit einer kleinen Änderung möglich, aus dem Link zur momentan geladenen Seite einen Menüpunkt ohne Verlinkung zu machen. Warum sollte die aktuelle Seite auch mit sich selbst verlinkt sein. das Array: QUELLTEXT <?php $url = array( "/index.php"=>"Home", "/anfahrt.php"=>"Anfahrt", "/kontakt/kontakt.php"=>"Kontakt", "/kontakt/impressum.php"=>"Impressum"); die Verarbeitung: QUELLTEXT <?php echo '<ul>'; while(list($key, $val) = each($url)){ echo '<li>'; if (strstr($_SERVER['SCRIPT_NAME'],$key)) { echo '<span id="current">'.$val.'</span>'; } else { echo '<a href="'.$key.'">'.$val.'</a>'; } echo '</li>'."\n"; } echo '</ul>'; ?> Ich habe die Dateinamen im Unterschied zu Andreas' Lösung vollständig in das Array geschrieben. Ansonsten funktioniert alles gleich, bis auf die Tatsache, dass der Menüpunkt der aktuellen Seite kein Link ist. Der allen Pfaden vorangestellte Schrägstrich/Slash ("/") sorgt dafür, dass ein Browser davon ausgeht, dass die Angaben vom Domainnamen aus gesetzt sind (Home: www.example.com/index.php, Impressum: www.example.com/kontakt/impressum.php). Egal, in welchem Verzeichnis die aufgerufene Seite liegt, das Menü enthält immer die richtigen Pfade zu den anderen Seiten. Das Element <span> verwende ich, damit die Formatierung in allen graphischen Browsern gleich dargestellt wird. Ohne dieses zusätzliche Element müsste man sich mit dem fehlerhaften Boxmodel des MSIE herumschlagen. Tschö, Auge Der Beitrag wurde von Auge bearbeitet: 17.04.2007 - 14:40 |
|
|
![]()
Beitrag
#5
|
|
Nachschlagewerk des Orakels ![]() Gruppe: Mods Beiträge: 955 Mitglied seit: 29.08.2006 Wohnort: Frankfurt am Main Mitglieds-Nr.: 6.217 ![]() |
daher kann man als Alternative $_SERVER["SCRIPT_NAME"] nehmen. $_SERVER["SCRIPT_NAME"] evaluiert aber bei lokalen Installationen, bei denen nicht mit einem Apache-PHP-Plugin gearbeitet wird, zu etwas in der Art: "/php3-bin/php.exe". Der Name der Seite kommt dann nicht darin vor. Dann sollte man ggf. eher mit den Indizes "REQUEST_URI" oder "PATH_TRANSLATED" arbeiten. Die Konstante __FILE__ wäre eine weitere (und wirklich sichere) Möglichkeit. Auf diese Optionen hatte ich jetzt allerdings erstmal nicht verwiesen, um nicht zu sehr von der eigentlichen Ursache abzulenken. Das Problem wird momentan wohl sein, dass der (vermeintliche) Seitenname und der Index im Array nicht übereinstimmen.
|
|
|
![]()
Beitrag
#6
|
|
is getting harder Gruppe: User Beiträge: 11 Mitglied seit: 11.04.2007 Mitglieds-Nr.: 6.770 ![]() |
herzlichen Dank für die vielen Ideen, die Unterstützung und sogar noch weiteren Verbesserungsvorschläge!
Die Ausgabe zu überprüfen - da hätte ich ja eigentlich selbst mal drauf kommen müssen... die Ausgabe von HTML <?php echo basename($_SERVER['PHP_SELF']); ?> ist: "navigation.php" . das ist das script welches den Navigationsbereich generiert und welches ich mit HTML <body> <?php $navigation=file_get_contents("http://www.dieeinsparberater.de/navigation.php"); echo $navigation; ?> <div id="inhalt"> .... auf jeder Seite einbinde. =>die Navigation muss nur an einer Stelle gepflegt werden. Es enthält innerhalb des <div id="navigation"> das hier besprochene LinkScript und erscheint im oben beschriebenen css-frame. Weil ich noch nicht so lange dabei bin und vom Seitenlayout mittels LaTeX für Fachbücher etc... komme bin ich auch für Anregungen im Bereich des Vorgehensstrategie sehr dankbar: Ist das ein unlogisches Vorgehen im webdesign?? Würdet ihr es anders machen? Aber das wichtigste: wie komme ich aus dem navigation.php raus um die aktuelle Seite abzufragen?? Der Beitrag wurde von HPVD bearbeitet: 17.04.2007 - 19:19 |
|
|
![]() ![]() |
![]() |
Vereinfachte Darstellung | Aktuelles Datum: 14.05.2025 - 1:28 |