• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Aktuell Aktiven link mit php ohne css und javascript hervorheben.

Shrax

Mitglied
Problem:
Der Link der gerade aufgerufen ist soll unterstrichen - einen anderen hintergrund und eine andere schriftfarbe bekommen.

Beispiel
<a href="link.php">Link der Aktiv ist</a>

hat die formatierung
Code:
a:link /* hier evtl. noch eine Klasse */ {
color: white;
background-color:black;
text-decoration:none;}
Ist der link aber aktiv, also ist man auf der seite, soll das so aussehen:
Code:
a:link {
color: black;
background-color:white;
text-decoration:underline;}
Schwierigkeiten:
- Aus gründen von Barreriefreiheit soll kein JavaScript eingesetzt werden.
- Die seite wird php geladen, Navigation ist includet also kann ich den aktiven link nicht per html und css formatieren.

Frage:
Wie löse ich dies mit php am Barreriefreiheit's freundlichsten?
 
Zuletzt bearbeitet:
Verwendest du Url-Parameter?

PHP:
<a href="" title="" <?php if (isset($_GET['page']) && $_GET['page'] == 'link1') echo 'id="actualLink"'; ?>>Link</a>
 
Nein, aber ich bin für alles offen. Wie wendet man diese an? Also wie man sie in einen link einbaut sehe ich hier. Doch was steckt an funktion dahinter? Prüft der Webserver hier etwa welche Seite aktiv ist?

Ich kenne mich mit php leider sehr wenig aus.
 
Wie ist denn deine Website aufgebaut? Hast du da für jede Seite eine eigene .php-Datei erstellt?


So is es flexibler:
PHP:
<?php
echo '<html>';
echo '<head>';
echo '</head>';
echo '<body>';

// --- Navigation
echo '<ul>';
echo '<li><a href="index.php?page=home" title="Home">Home</a></li>';
echo '<li><a href="index.php?page=blog" title="Blog">Blog</a></li>';
echo '<li><a href="index.php?page=contact" title="Kontakt">Kontakt</a></li>';
echo '</ul>';

$page = 'home';
$allPages = array('home.php', 'blog.php', 'contact.php');

// --- get page param
if (isset($_GET['page'])) 
{
    $page = (string)$_GET['page'];
}

// --- prüfen ob page im array allPages vorkommt
if (in_array($page.'.php', $allPages))
{
    require_once($_GET['page'].'.php');
}


echo '</body>';
echo '</html>';
?>
 
Meine seite besteht aus einer manuellen seite und einen Wordpress blog der allerdings davon abgekoppelt ist.
Der Blog interessiert nicht.

Hier die Seite, den link werde ich später aber wieder weggedieren (was hoffentlich klappt )http://daniel-kreiter.de
--

Daran kannst du erkennen das die links einfach php dateien sind.
Nur der Header wird includet.


Der von dir gepostete code sagt mir leider noch nicht viel.

Etwas davon verstehe ich ja, doch wie setze ich das in meine seite um?
 
Zuletzt bearbeitet:
Die Frage ist was Du mit "aktiv" genau meinst.

Soll der Link beim Anklicken, kurz bevor dieses Anklicken einen Request an den Server auslöst, anders dargestellt werden.
Oder soll der Link dann anders dargestellt werden, wenn die damit verknüpfte URL der gerade aufgerufenen URL entspricht.

Beides sind unterschiedliche Interpretationen des Wortes "aktiv" in Bezug auf einem Link.

Den ersteren Fall kann man mit CSS und der Pseudoklasse :active abhandeln.

Den zweiten Fall macht man heutzutage meist mit einer zusätzlichen Klasse. Beispiel:
HTML:
<a href="linkziel.html" class="aktiv">Linkbezeichnung</a>

Code:
a.aktiv:link {
color: black;
background-color:white;
text-decoration:underline;}

Diese Klasse kannst Du einfach über php in den Link setzen.
 
Oh die letzte Antwort hatte es wohl nicht abgeschickt.
Also nochmal.


Ja ich meinte zweiteres.
Wie setze ich diese Klasse bei einem Aktiven link per php denn?
 
PHP:
<?php
//dateiname.php
$fileName = strrchr($_SERVER['SCRIPT_NAME'], '/');
?>
<a href="home.php"<?php if ($fileName == "home.php") echo ' class="aktiv"' ?>>Home</a>
<a href="contact.php"<?php if ($fileName == "contact.php") echo ' class="aktiv"' ?>>Kontakt</a>
<a href="imprint.php"<?php if ($fileName == "imprint.php") echo ' class="aktiv"' ?>>Impressum</a>
 
Das Beispiel von T!P-TOP ist nur ein Beispiel. Letztlich hängt es primär davon ab wie Du die einzelnen Dateien und Inhalte deiner Webseite verwaltest.
 
Okay erstmal vielen Dank. Wie ich die Verwalte? Letztendlich sind es nur ca 6 Links die ganz normale .php dateien aufrufen. Wo die liegen ist denk ich ja nicht so wichtig oder?

Es klappt leider noch nicht. Folgender versuch per Screenshot deutlich gemacht:
Hier sieht man das die klasse nicht gesetzt wurde. (in Firebug)
aktiv01.jpg - Bilder und Fotos kostenlos auf ImageBanana hochladen


Hier sieht man den Code:
aktiv02.jpg - Bilder und Fotos kostenlos auf ImageBanana hochladen

Das // Dateiname.php ist lediglich ein Kommentar. Oder liege ich da falsch?
 
Möglicherweise wird das erste Vorkommen vom letzten Slash mit in $fileName gespeichert.

Versuchs mal so:
PHP:
<?php
//dateiname.php
$fileName = strrchr($_SERVER['SCRIPT_NAME'], '/');
?>
<a href="home.php"<?php if ($fileName == "/home.php") echo ' class="aktiv"' ?>>Home</a>
<a href="contact.php"<?php if ($fileName == "/contact.php") echo ' class="aktiv"' ?>>Kontakt</a>
<a href="imprint.php"<?php if ($fileName == "/imprint.php") echo ' class="aktiv"' ?>>Impressum</a>
 
Perfekt! Vielen Dank so funktioniert es.

Nur kurz zum verständniss da ich von php keine ahnung habe.:
PHP:
<?php
                            //dateiname.php
                            $fileName = strrchr($_SERVER['SCRIPT_NAME'], '/');
                        ?>
Hier holt man sich den Namen der Datei und speichert es in fileName.

Darauf hin prüft man ob fileName der jeweilige Linkname ist:
<?php if ($fileName == "/browserfunktionen.php")
und wenn dies 'wahr' ist also zutrifft gibt man mit echo ins HTML
die klasse aktiv.
PHP:
echo ' class="aktiv"'
Der Fehler von gerade liegt darin das der slash \ mit in fileName gespeichert wird, und der name
browserfunktionen.php == /browserfunktionen.php so natürlich UNGLEICH war.
 
Ja Genau so ist es.

Hier die Beschreibung von der Funktion strrchr: PHP: strrchr - Manual

Mit $_SERVER['SCRIPT_NAME'] bekommt man die aktuelle Seite + den absoluten Pfad. Sprich, rufe ich die index.php im Rootverzeichnis auf, sieht der Inhalt von $_SERVER['SCRIPT_NAME'] folgendermaßen aus:
http:// www.blablabla.de/index.php

Da man aber lediglich für die if Anweisung den Namen der Date benötigt, holt man sich mit der strrchr() Funktion das letzte Slash Vorkommen, sprich das vor der index.php. Nun wird dieses und alle darauf folgende Zeichen (/index.php) in $fileName gespeichert.

Und Ja, wie`s weiter geht weiß Du ja eh.
 
Zurück
Oben