zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Aktiven Menüpunkt hervorheben, obwohl die Navigation includiert wurde?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 06.12.2008, 11:20
Benutzerbild von rockpianist
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 29.01.2008
Ort: Dresden
Beiträge: 123
rockpianist wird schon bald berühmt werden
Standard Aktiven Menüpunkt hervorheben, obwohl die Navigation includiert wurde?

Ich habe mein Webprojekt modularisiert und Kopfbereich, Navigation usw. ausgelagert:
PHP-Code:
<?php 
    
include("_included/navigation.html"); 
?>
Das funktioniert alles hervorragend. Allerdings "sieht" die Navigation ja nicht, in welchem Menüpunkt (z.B. index.php, kontakt.php, standort.php) ich mich befinde. Demzufolge kann ich den aktiven Menüpunkt auch nicht in einer anderen Farbe hervorheben. Das ist schlecht für die Usability!

Gibt es einen Trick, (php, CSS-Liste, inline-css oder Ähnliches) den aktiven Menüpunkt farblich anders zu gestalten obwohl die Navigation "ausgelagert" wurde?
Danke rp
__________________
Von Joomla 1.014 und 1.5.8 wieder zurück auf handprogrammiertes (X)HTML/CSS!
Vista-Home Premium
http://www.klavierunterricht-radeberg.de
"Take second best put me to the test!"
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 06.12.2008, 11:22
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Kannste beispielsweise über ne GET-Variable machen

Die dann in der Navi abrufen und einfach mit ner IF-Struktur prüfen welchen Punkt er hervorheben soll ^^
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 06.12.2008, 11:39
CMS-Entwickler
XHTMLforum-Mitglied
 
Registriert seit: 26.08.2006
Beiträge: 493
javaFreak befindet sich auf einem aufstrebenden Ast
Standard

Es gibt auch einen CSS-Trick.
Du weist auf jeder Seite dem Body-Tag eine andere Id zu. Z.B.

HTML-Code:
<body id="kontakt">
Dann weist du noch jedem Menüpunkt eine Id zu z.B:

HTML-Code:
<li id="kontakt-link"></li>
Wenn du jetzt in deine CSS-Datei folgende Regeln schreibst:

Code:
#kontakt #kontakt-link
{
   color:red;
}

#impressum #impressum-link
{
   color:red;
}
Müsste es klappen. Ich habe es so im Kopf, kann sein, dass es noch etwas einfacher geht..
__________________
Liebe Grüße,
Lukas aus Bocholt
Mit Zitat antworten
  #4 (permalink)  
Alt 06.12.2008, 14:13
Benutzerbild von rockpianist
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 29.01.2008
Ort: Dresden
Beiträge: 123
rockpianist wird schon bald berühmt werden
Standard

Danke euch beiden, da eXHTML schneller war, habe ich die php-Variante genommen. Ist vielleicht auch ein wenig effektiver, weil der größte Aufwand in der includierten Navigationsdatei erfolgt.

Für alle, die ebenfalls kaum php-Kenntnisse haben, es funktioniert wie folgt: Die Einbindung in der aufrufenden Datei:
PHP-Code:
<?php 
    $active_menu
="audio";
    include(
"../_included/navigation.php"); 
?>
Die aufgerufene Datei navigation.php sieht so aus:
PHP-Code:
<ul>
<li<?php if ($active_menu == "home") { echo ' class="active"';} ?>>
    <a href="/" title="Home">Home</a></li>
<li<?php if ($active_menu == "audio") {echo ' class="active"';} ?>>
    <a href="/audio" title="Hören">Audio</a></li>
<li<?php if ($active_menu == "kontakt") {echo ' class="active"';} ?>>
    <a href="/kontakt" title="Kontakt">Kontakt</a></li>
</ul>
rp
__________________
Von Joomla 1.014 und 1.5.8 wieder zurück auf handprogrammiertes (X)HTML/CSS!
Vista-Home Premium
http://www.klavierunterricht-radeberg.de
"Take second best put me to the test!"
Mit Zitat antworten
  #5 (permalink)  
Alt 06.12.2008, 15:17
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Wozu eine Variable deklarieren? Mit „basename($_SERVER['PHP_SELF'])“ bekommst du die aktuell aufgerufene Datei heraus, dann musst du nur noch deine Navigation anpassen und nicht jede einzelne Seite.
Mit Zitat antworten
  #6 (permalink)  
Alt 06.12.2008, 15:27
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

„PHP_SELF“ liefert aber den URL-Pfad zum ausgeführten PHP-Skript und nicht den angefragten URL-Pfad. Der steht nämlich unter anderem in „REQUEST_URI“. Deswegen mein Vorschlag:
PHP-Code:
$nav = array(
    
'/'        => array('Home''Home'),
    
'/audio'   => array('Audio''Hören'),
    
'/kontakt' => array('Kontakt''Kontakt'),
);
$_SERVER['REQUEST_PATH'] = preg_replace('/\?.*/'''$_SERVER['REQUEST_URI']);
foreach (
$nav as $url => $desc) {
    echo 
'<li' . ($url == $_SERVER['REQUEST_PATH'] ? ' class="active"' '') . '><a href="' $url '" title="' $desc[1] . '">' $desc[0] . '</a></li>';

__________________
Markus Wulftange
Mit Zitat antworten
  #7 (permalink)  
Alt 06.12.2008, 15:37
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Zitat:
Zitat von Gumbo Beitrag anzeigen
„PHP_SELF“ liefert aber den URL-Pfad zum ausgeführten PHP-Skript und nicht den angefragten URL-Pfad.
Ja, ich habe ihn auch so verstanden, dass er den aktiven Punkt anhand der aktuell ausgeführten Datei bestimmen möchte.

Ich würde die Navigation aber auch mit eine Schleife anhand eines Arrays erstellen, alles einzeln anzulegen ist mehr Aufwand.
Mit Zitat antworten
  #8 (permalink)  
Alt 06.12.2008, 20:13
Benutzerbild von rockpianist
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 29.01.2008
Ort: Dresden
Beiträge: 123
rockpianist wird schon bald berühmt werden
Standard

Danke, das ist jetzt die Profilösung, ich musste noch einen Slash hinter /audio und /kontakt schreiben:, das ist der geänderte Code:

PHP-Code:
$nav = array(
    
'/'        => array('Home''Home'),
    
'/audio/'   => array('Audio''Hören'),
    
'/kontakt/' => array('Kontakt''Kontakt'),
);
$_SERVER['REQUEST_PATH'] = preg_replace('/\?.*/'''$_SERVER['REQUEST_URI']);
foreach (
$nav as $url => $desc) {
    echo 
'<li' . ($url == $_SERVER['REQUEST_PATH'] ? ' class="active"' '') . '><a href="' $url '" title="' $desc[1] . '">' $desc[0] . '</a></li>';

__________________
Von Joomla 1.014 und 1.5.8 wieder zurück auf handprogrammiertes (X)HTML/CSS!
Vista-Home Premium
http://www.klavierunterricht-radeberg.de
"Take second best put me to the test!"
Mit Zitat antworten
  #9 (permalink)  
Alt 06.12.2008, 22:08
CMS-Entwickler
XHTMLforum-Mitglied
 
Registriert seit: 26.08.2006
Beiträge: 493
javaFreak befindet sich auf einem aufstrebenden Ast
Standard

Die CSS-Lösung ist insofern in deinem Fall sinnvoller, als dass die navigation.php eben nicht weiß, von welcher Datei aus sie included wurde.

Aber du hast eine Lösung die funktioniert also gut ist^^
__________________
Liebe Grüße,
Lukas aus Bocholt
Mit Zitat antworten
Sponsored Links
Antwort

Stichwörter
active, include, navigation


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Navigation safari CSS 12 20.04.2011 11:11
Float-Problem? mischaef CSS 33 20.10.2010 16:20
Hilfe: navigation included - wie kann man den aktiven menüpunkt highlighten? nea23 Serveradministration und serverseitige Scripte 20 18.10.2010 17:08
Javascript UL Navigation im IE6 ven CSS 7 29.04.2008 15:29
Container mit 2 Container darin -> Hintergrund anzeigen bendar CSS 4 05.04.2005 18:18


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:59 Uhr.