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

Automatische Erkennung von Links

  • Ersteller Ersteller Tobias
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
T

Tobias

Guest
Hallo,
ich habe ein Template erstellt.

Dort habe ich auch
in der Navigation eingebunden.

Also auf dem Link, auf dem man sich gerade befindet (class="active") ist denn grau unterlegt.

D.h. wenn ich auf der Startseite bin, sieht die Navi so aus:

Code:
    <ul>
    <li class="active"><a href="index.html">Home</a></li>
    <li><a href="#">G&auml;stebuch</a></li>
    <li><a href="#">About me</a></li>
    <li><a href="#">Downloads</a></li>    
    <li><a href="#">Webdesign</a></li>
    <li><a href="#">Photos</a></li>
    <li><a href="#">Kontakt</a></li>
    </ul>
Wenn ich auf der Seite Downloads bin:

Code:
    <ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="#">G&auml;stebuch</a></li>
    <li><a href="#">About me</a></li>
    <li  class="active"><a href="#">Downloads</a></li>    
    <li><a href="#">Webdesign</a></li>
    <li><a href="#">Photos</a></li>
    <li><a href="#">Kontakt</a></li>
    </ul>
usw.!

Mit Html ja gar kein Problem, denn änder ich das einfach manuell auf jeder einzelnen Seite um aber wie mache ich das, wenn ich mit Php-Include arbeite und nur EINMAL eine Navi habe ?

Also wie geht das, dass er automatisch erkennt auf welcher Seite man ist und automatisch dementsprechnd das class="active" hinsetzt!
 
Zuletzt bearbeitet von einem Moderator:
du musst ja php über irgendein parameter (Beispiel ?site=xxx) mitteilen, welche Seite eingebunden werden soll. Den gleichen Parameter kannst du benutzen, um deine Navigation entsprechend anzupassen.

Beispiel
PHP:
<?php
$whitelist = array("index","download","kontakt");
$site = isset($_GET["site"])
          ? (in_array($_GET["site"], $whitelist)
              ? $_GET["site"] : "index") 
          : "index";

$navigation = <a href=\"?site=index\"";
if($site == "index") $navigation .= " class=\"active\"";
$navigation .= ">Home</a>";

$navigation = <a href=\"?site=download\"";
if($site == "download") $navigation .= " class=\"active\"";
$navigation .= ">Download</a>";

$navigation = <a href=\"?site=kontakt\"";
if($site == "kontakt") $navigation .= " class=\"active\"";
$navigation .= ">Kontakt</a>";

print $navigation;

include($site.".tpl");
?>
 
Danke für die Antwort! Aber da ich noch nicht so der PHP-Pro bin, wäre ich dankbar wenn ihr mir direkt an meinem Beispiel helft:



Code von Config:

PHP:
<?php    
    $dateien = array(); 
    $dateien['home'] =         "inhalt/home.php";
    $dateien['feedback'] = "inhalt/feedback.php";
    $dateien['about'] =     "inhalt/aboutme.php";
    $dateien['downloads'] = "inhalt/downloads.php";
    $dateien['webdesign'] = "inhalt/webdesign.php";
    $dateien['photos'] =     "inhalt/photos.php";
    $dateien['kontakt'] =     "inhalt/kontakt.php";
    
?>
Code von menu:
Code:
    <ul>
    <li><a href="index.php">Home</a></li>
    <li><a href="index.php?section=feedback">Feedback</a></li>
    <li><a href="index.php?section=about">About me</a></li>
    <li><a href="index.php?section=downloads">Downloads</a></li>    
    <li><a href="index.php?section=webdesign">Webdesign</a></li>
    <li><a href="index.php?section=photos">Photos</a></li>
    <li><a href="index.php?section=kontakt">Kontakt</a></li>
    </ul>
Code von Inhalt.php:
PHP:
<?php
    if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {
        include $dateien[$_GET['section']];
    } else {
        include $dateien['home'];
    }
?>
 
Zuletzt bearbeitet von einem Moderator:
Tobias,
auch du darfst im Forum die Code-Tags anstatt der Zitatfunktion für gepostete Codes verwenden.
 
Versuchs mal hiermit:

PHP:
<?php

function checksection($name) {
    $section = $_GET['section'];
    if($section == $name) {
        return "class=\"activate\"";
    }
    else {
        return "class=\"norm\"";
    }
}

?>


<li <?=checksection("home")?>><a href="?section=home">Home</a></li>
<li <?=checksection("links")?>><a href="?section=links">Links</a></li>
<li <?=checksection("gb")?>><a href="?section=gb">G&auml;stebuch</a></li>
<li <?=checksection("imprint")?>><a href="?section=imprint">Impressum</a></li>


Musst es halt noch etwas an deine Seite anpassen
 
geht nicht, es kommt der fehler:


Notice: Undefined index: section in /mnt/web3/20/50/51528150/htdocs/test/23/menu.php on line 5
class="norm">home
 
das bedeutet das er $_GET['section'] nicht findet.
evtl, hast du ihm kein parameter gegeben ?


Auch wenn da jedes designkonzept hier gebrochen wurde:
PHP:
function checkSection($name) //Pascal letters für eine bessere lesbarkeit
{
    if(isset($_GET['section']) && $_GET['section'] == $name) //prüfen ob es gesetzt wurde, dann erst auf einen wert überprüfen.
        return 'class="activate"'; // klammern sparen, HTML ausgeben, undzwar in ', ist schneller.
    return 'class="norm"'; //quasi der "weiter" Zweig der funktion
}
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben