phpbar.de logo

Mailinglisten-Archive

[php] Bei Include - CSS problem

[php] Bei Include - CSS problem

Toby Schroeder Toby.Schroeder at gmx.de
Don Mar 31 01:35:40 CEST 2005


Hallo Koray,

> Da es einfacher ist, habe ich für die Navigation auf allen Seiten ein
> Include auf ein einziges File gemacht.

ist ja auch OK, wenn die Navigation immer gleich ist. Ich mache das
auch so - wenn ich mit Files arbeite.

> Normalerweise sollte bei einem klick auf ein link die link
> farbe aktiv bei orange sein, so habe ich es im CSS
> eingestellt. 

So ist es wahrscheinlich auch... aber nur für den kaum wahrnehmbaren 
Bruchteil einer Sekunde! 

In dem Moment, in dem du auf den Link klickst, wird er "aktiv".  Nimm
mal eine Farbe, die dir extrem auffällt. Dann klicke den Link an und 
schaue gleichzeitig auf die Website - du wirst ein Flackern sehen und
erkennen, dass dein "aktiv" ganz kurz wirksam war.

Aber was passiert dann, wenn man auf den link geklickt hat?  Na, dann 
wird die Seite geladen, die du angeklickt hast.. und dann ist dein 
"aktiv" natürlich wieder futsch, weil ja eine neue Seite geladen worden 
ist. 

Das passiert, wenn man eine Website z.B. über eine einzige Datei -also
z.B. eine "index.php"- lädt.  Dann hat man z.B. die "index.php", in der
sich der Kopf-, der Fuß- und der Navigationsbereich der Website befin-
det. Der Rest -also der eigentliche Content- wird dann aus Files oder 
aus einer Datenbank nachgeladen.

> Da es jedoch ein Include ist, versteht er es natürlich
> nicht und die links verändern sich nicht wenn
> sie aktiv sind.

Mit Include hat das nichts zu tun und ein "Fehler", nach dem hier 
nun seit Stunden geforscht wird, liegt möglicherweise auch nicht vor.  

Es ist völlig egal, ob du deine Navigation direkt in die "index.php" 
einträgst oder sie -der einfacheren Wartung halber- in ein File 
schreibst, das du dann per "include" in die "index.php" einfügst.

Wenn deine Website so aufgebaut ist, wie ich vermute, dann wird bei
einem Klick auf einen solchen Navi-Link die "index.php" erneut auf-
gerufen. Zwar wird diese z.B. mit neuen GET-Variablen aufgerufen,
aber HTML und CSS erkennen das nicht und können das ja auch nicht 
erkennen.  Sie sehen also keine "aktive" Seite, sondern eine neue 
Seite. Deshalb läuft dein "A:active" im Stylesheet ins Leere - wie 
gesagt, nicht wirklich, weil es ja für den Bruchteil einer Sekunde 
angezeigt wird. Aber das ist ja nicht der Effekt, den du haben 
möchtest. 

> Gibt es da einen kleinen Trick womit man das ganze schnell
> lösen könnte?

Ich habe mal eben auf einer älteren filebasierten Website nachge-
sehen, in der ich das damals mit PHP umschifft habe.

Bei jener Website ist es so, dass es eine "index.php" gibt, die den
Hauptrahmen für die Website darstellt. Die Navigation wird dort auch
per Include -über eine "navigation.inc.php"- in die "index.php" ein-
gefügt. 

Hier ein leicht abgeändertes Codeschnipsel aus dieser Datei 
"navigation.inc.php":

************
<?php
if ($navi[$i] == $_GET['page']) 
	{ 
	echo "<font color='#ffffff'>"; echo $naviname[$i]; echo
"</font>"; 
	} 
	else 
		{ 
?>
<a class="navigation" href="index.php?link=<?php echo $files[$i]
?>&amp;page=<?php echo $navi[$i] ?>">
<?php echo $naviname[$i]; ?></a>
<?php
		 } 
?>
************

Erläuterung:

In der "navigation.inc.php" wird in einer FOR-Schleife ein Ver-
zeichnis durchsucht und es werden dann die gefundenen Werte im 
Menü aufgelistet. Dem vorstehenden Schnippsel kannst du entnehmen,
dass in dem Falle, dass der Name des Navigationspunktes identisch 
ist mit dem Namen der aufgerufenen Seite, also 
($navi[$i] == $_GET['page']) ist, die erste Bedingung der "if-
Anweisung" erfüllt ist.

Dann wird dort kein Link angezeigt, sondern nur der Name des
Menüpunktes - in weißer Schrift. Also, angenommen, du hast eine 
Website, auf der im Menü auch ein Punkt "Produkte" aufgeführt ist, 
dann wird dann, wenn der User diesen Punkt anklickt, die Seite 
"Produkte" aufgerufen. In der Navigation auf der aufgerufenen Seite 
"Produkte" erscheint dann das Wort "Produkte" in weißer Schrift 
-du kannst es ja in Orange- ändern. Das Wort "Produkte" ist nicht 
mehr anklickbar, weil das ja keinen Sinn macht - schließlich ist man 
dann ja schon auf dieser Seite.

Also, in der Seite, die die Navigation enthält, vor der Ausgabe 
mittels PHP prüfen, welcher Menüpunkt angeklickt worden ist. Dann
kann man den auch -auf der neu aufgerufenen "index.php" - enstpre-
chend anders gestalten.

Es ist schon spät. ;-) Wenn das nun alles zu neu und zu wirr für 
dich war, kannst du mir ja eine PM schicken. ;-)

Grüße


Toby



php::bar PHP Wiki   -   Listenarchive