PHP include_once - link:active übernehmen?
redbaron
- php
0 Tom0 Ingo Turski0 Tom0 wahsaga0 Tom
0 Ingo Turski
0 redbaron
Hallo Leute!
Ausgangsposition: habe eine Site optik.php, in der ich mein Sitedesign drinnen habe und mit Funktionen den header, footer, die navigation, usw. auslesen kann um sie in meine Seiten zu bringen.
Meine Navigation besteht aus einer Liste mit fixen Einträgen, die aus der optik.php geholt werden. Hier ein Auszug aus der optik.php:
function getLeftMenu()
{
$leftmenu="
<div id="lefttopmenu">
<div id="mainmenu">
<ul>
<li>HAUPTMENÜ</li>
</ul>
</div>
<div id="submenu">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="about.php">Über uns</a></li>
<li><a href="members.php">Mitglieder</a></li>
</ul>
</div>
</div>
</div>
";
return $leftmenu;
}
Codeauszug der index.php:
<?php
include_once("optik.php");
echo getHeader();
echo getNavigation();
echo getFooter();
?>
Wenn ich nun auf einen Link in meiner Navigation klicke werde ich auf die entsprechende Seite weitergeleitet, die Seite wird neu aufgebaut. Der Link verliert aber dabei seinen grauen Hintergrund den ich ihm mit link:active zugewiesen habe in der CSS Datei. Ich glaube, das geschieht deshalb, da ich eine neue Seite aufrufe und das active nicht übernommen wird.
Gibt es eine Möglichkeit in der aufgerufenen Seite zu deklarieren, dass genau dieser Link aktiv ist, d.h. zum Beispiel eine graue background-color hat oder ähnliches?
Im Prinzip möchte ich nur, dass man in der Navigation nach Klick auf einen Link sieht, dass man diesen Link gedrückt hat und sich nun den Inhalt zu dem Link ansieht. Damit die Navigation klarer ersichtlich ist.
Hab mein gesamtes Design mit Divs und CSS aufgebaut, mit Frames möchte ich nicht arbeiten. Vielleicht hat jemand eine Idee wie man das machen kann, sehe es ja sehr oft im Netz.
Danke für eure Hilfe, komme wirklich nicht mehr weiter!!
Lg Joe
Hello,
Gibt es eine Möglichkeit in der aufgerufenen Seite zu deklarieren, dass genau dieser Link aktiv ist, d.h. zum Beispiel eine graue background-color hat oder ähnliches?
Ja.
Dein Script weiß ja, welche Seite gerade aktiv ist und kann daher dem Link die passende Klasse (zusätzlich) zuweisen. Hier kannst Du also so ähnlich arbeiten, wie bei den Radio-Buttons und ihrem Attribut "selected". Das wird doch auch nur dann hinzugefügt, wenn das Ding ausgewählt wurde.
Da Deine Seite immer neu geladen wird, kannst Du mit den Pseudoklassen nicht wirklich etwas anfangen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi,
Dein Script weiß ja, welche Seite gerade aktiv ist und kann daher dem Link die passende Klasse (zusätzlich) zuweisen.
Oder besser: den Menüpnkt gar nicht erst verlinken und das a z.B. durch ein span ersetzen, welches sich dann auch ohne Klasse gesondert formatieren läßt.
freundliche Grüße
Ingo
Hello,
Dein Script weiß ja, welche Seite gerade aktiv ist und kann daher dem Link die passende Klasse (zusätzlich) zuweisen.
Oder besser: den Menüpnkt gar nicht erst verlinken und das a z.B. durch ein span ersetzen, welches sich dann auch ohne Klasse gesondert formatieren läßt.
Den aktiven Menupunkt nicht zu verlinken, finde ich persönlich nicht so schön. Wenn man die Seite nochmal aufrufen will, müsste man die Navigation verlassen, und den Reload-Button des Browsers benutzen. Das ist dann ein typischer Bruch in der Bedienung.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
hi,
Den aktiven Menupunkt nicht zu verlinken, finde ich persönlich nicht so schön.
Es wird in Punkto Usability aber allgemein empfohlen.
Wenn man die Seite nochmal aufrufen will, müsste man die Navigation verlassen, und den Reload-Button des Browsers benutzen.
Das müsste man bei einer Site, die ein ordentliches Caching-Konzept verwendet, sowieso - ein erneuter Klick auf den Link würde da nämlich nur die gecachte Version erneut anzeigen, erst ein Reload würde die Ressource wirklich neu anfordern.
Das ist dann ein typischer Bruch in der Bedienung.
Ich halte eher einen "Link", der dorthin zeigt wo ich mich sowieso gerade befinde, für einen "Bruch" des Konzeptes Hyperlinking.
gruß,
wahsaga
Hello,
Ich halte eher einen "Link", der dorthin zeigt wo ich mich sowieso gerade befinde, für einen "Bruch" des Konzeptes Hyperlinking.
Na, gut. Ich legs nochmal unters Kopfkissen, und denke drüber nach :-)
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi,
Den aktiven Menupunkt nicht zu verlinken, finde ich persönlich nicht so schön.
eine Zusatzbemerkung zu dem von wahsaga gesagtem:
wenn jemand auf einen Link klickt, dann erwartet er in aller Regel auch eine neue Seite zu laden.
Und da sich bei einem Link auf die aktuell angezeigte Seite meist garnichts tut, kann dies durchaus verwirren im Sinne, daß der Link nicht funktioniert oder der Klick nichts bewirkt hat. Es kann leicht passieren, daß ein Besucher mehrmals auf einen solchen sinnlosen Link klickt, bis er vielleicht bemerkt, daß er die angeforderte Seite bereits sieht - oder im schlimmsten Fall die (offenbar nicht funktionierende) Seite gefrustet verläßt. _Das_ ist ein Bruch in der Bedienung.
freundliche Grüße
Ingo
Hello,
Gibt es eine Möglichkeit in der aufgerufenen Seite zu deklarieren, dass genau dieser Link aktiv ist, d.h. zum Beispiel eine graue background-color hat oder ähnliches?
Ja.
Dein Script weiß ja, welche Seite gerade aktiv ist und kann daher dem Link die passende Klasse (zusätzlich) zuweisen. Hier kannst Du also so ähnlich arbeiten, wie bei den Radio-Buttons und ihrem Attribut "selected". Das wird doch auch nur dann hinzugefügt, wenn das Ding ausgewählt wurde.Da Deine Seite immer neu geladen wird, kannst Du mit den Pseudoklassen nicht wirklich etwas anfangen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.deTom
Danke schon mal für die Hilfe, ich glaube ich habe es aber noch nicht ganz verstanden. Könntest du mir vielleicht noch detaillierter beschreiben wie das mit dem selected funktionieren soll. Ich hole ja meine Navigation bei jeder Seite neu rein, wie kann ich da dann einen einzelnen Link ansprechen und den verändern?
Falls das absolute DAU Fragen sind, bitte entschuldigen, es wäre für die intuitive Navigation auf meiner Seite aber sehr wichtig das mit den Links hinzubekommen.
Danke!
Lg redbaron
Hello,
Danke schon mal für die Hilfe, ich glaube ich habe es aber noch nicht ganz verstanden. Könntest du mir vielleicht noch detaillierter beschreiben wie das mit dem selected funktionieren soll. Ich hole ja meine Navigation bei jeder Seite neu rein, wie kann ich da dann einen einzelnen Link ansprechen und den verändern?
Wie ist denn Dein Gerippe aufgebaut?
Jedenfalls muss an einer Stelle Deines Bauwerkes bekannt sein, was demnächst passieren wird. Da kannst Du dann z.B. eine Variable setzen. Vielleicht musst Du das aber auch gar nicht, weil PHP das schon im Hintergrund für Dich besorgt.
Am Besten, Du beschreibst mal, wie du es machst.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
Danke schon mal für die Hilfe, ich glaube ich habe es aber noch nicht ganz verstanden. Könntest du mir vielleicht noch detaillierter beschreiben wie das mit dem selected funktionieren soll. Ich hole ja meine Navigation bei jeder Seite neu rein, wie kann ich da dann einen einzelnen Link ansprechen und den verändern?
Wie ist denn Dein Gerippe aufgebaut?
- Lauter unterschiedliche Seiten, die jeweils die Navigation dazuladen?
- Eine Kernseite, die die veränderlichen Teile und die Navigation dazulädt?
Jedenfalls muss an einer Stelle Deines Bauwerkes bekannt sein, was demnächst passieren wird. Da kannst Du dann z.B. eine Variable setzen. Vielleicht musst Du das aber auch gar nicht, weil PHP das schon im Hintergrund für Dich besorgt.
Am Besten, Du beschreibst mal, wie du es machst.
Harzliche Grüße vom Berg
http://www.annerschbarrich.deTom
Gut, hier mal ein Link zur Seite, nicht alle Unterpunkte sindimplementiert, contact und impressum funktionieren:
http://unet.univie.ac.at/~a0103695/php/index.php
Habe lauter unterschiedliche Seiten, index.php, about.php, members.php, contact.php, usw. Innerhalb jeder dieser Seiten inkludiere ich die optik.php - eine Datei wo das Layout enthalten ist, d.h. header, headline, navigation, footer. Mit Hilfe von Funktionen hole ich mir diese einzelnen Elemente der Seite herein.
Den Content (Inhalt) der Seite schreibe ich direkt in den Source jeder Seite, passe somit jede Seite noch extra an.
Kann den dazugehörigen Code auch noch posten oder online stellen falls gewünscht?
Gruß redbaron
Hello,
dann bau doch mal probehalber in die Seiten ein:
echo basedir(__FILE__);
Oder bau in jeder Seite, die Du da aufrufst, oben eine Variable ein:
$site = 1;
Bei jeder natürlich einen anderen Wert.
Und in der Navi baust Du dann ein
<a hfref="....." .... class="normale_Klasse <?php if(isset($site) and $site == 1) { echo " selected_Klasse"; } ?>" ....>
Ich hoffe, nun wird es klar.
Die CSS-Klassen überlagern sich. Da die "selected_Klasse" aber nur gewäjlt wird, wenn die passende Seite angezeigt wird, überschreibt sie auch nur dann die Anzeigeoptionen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom