Autor Zpráva
Buchtič
Profil
Zdravím,
Mám dotaz, zda je možné vytvořit zvýraznění aktivní položky menu bez parametru v URL.
př. v url místo index.php?str=uvod bude jenom index.php a php script to identifikuje, že je to index.php a tím pádem v menu bude označena položka, která odkazuje na index.php
Díky za případnou odpověď
K.
Profil *
Název skriptu zjistíš přes $_SERVER['PHP_SELF'], eventuelně pomocí __FILE__. Zbytek by neměl být problém.
Buchtič
Profil
Díky moc to je to co sem potřeboval. Ale vzhledem k tomu, že v PHP se zatim moc neorientuju, tak bych potřeboval poradit s tou podmínkou.


<?php
echo "<li";
if ($_SERVER['PHP_SELF']=='index.php') {
echo " class='active'";
}
echo "><a href='index.php'>Home</a></li>";
?>


Nějak nefunguje to porovnání. V tomhle případě se porovnání udělá jinak než obyčejné 2x= či kde je problém?
Díky
dis
Profil
To porovnávání je dobře. Otázka je, co přesně je uloženo v $_SERVER['PHP_SELF']; doporučuju doplnit testovací řádek

echo "v proměnné je: ".$_SERVER['PHP_SELF']."<br />";


Pokud např. máš index v podadresáři, bude jeho název rovněž uložen v této proměnné. Pak samozřejmě platí že "/adresar/index.php"!="index.php".
Buchtič
Profil
Díky moc chlapi :) Teď už to maká jak má.
dis
Profil
já ti dám chlapy :D:D
Buchtič
Profil
jaj, tak to sry.. takže díky dámo? ;)

no tak ještě jeden malej detail:

<?php
echo " <li>";

echo "<a";
if ($_SERVER['PHP_SELF'] == 'a.php' || 'b.php' || 'c.php') {
echo " class="active"";
}
echo " href="a.php">A;
?>


Mám skupinu A a pod ní spadají stránky B i C. Podle tohoto zápisu bych se domníval, že třída active skupiny A bude aktivní na stránce skupiny A podstránkách B,C. Jenže z nějakého důvodu se ta třída zobrazí také na ostatních stránkách (př. X,Y..).
Corwin
Profil
$_SERVER['REQUEST_URI'] bude IMHO lepší proměnná, půjde s tím lépe operovat, pokud některé soubory budou mít i parametr v $_GET. $PHP_SELF odkazuje pouze na soubor. právě kvůli parametrům, které adresa může, či nemusí obsahovat to já řeším takto:


<?php
$aktualni = $_SERVER['REQUEST_URI']

if ((preg_match("~index.php~", $aktualni)) || ($aktualni == "/")) {
$trida1 = "active";
} else {
$trida1 = "passive";
}

if (preg_match("~neco.php~", $aktualni)) {
$trida2 = "active";
} else {
$trida2 = "passive";
}

if (preg_match("~treba.php~", $aktualni)) {
$trida3 = "active";
} else {
$trida3 = "passive";
}
?>

<li><a class="<?php echo $trida1; ?>" href="./index.php">Hlavní strana</a></li>
<li><a class="<?php echo $trida2; ?>" href="./neco.php">Něco</a></li>
<li><a class="<?php echo $trida3; ?>" href="./treba.php">Třeba</a></li>


a tvůj poslední dotaz lze vyřešit přidáním dalších nebo || do podmínek. není to sice moc šikovné řešení, ale na webu s malým počtem odkazů v menu si myslím, že to lze v klidu použít.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: