Autor Zpráva
Anonymní
Profil *
Mám odkazy
<a href="x" class="a">neco</a>
<a href="y" class="a">neco</a>
<a href="z" class="a">neco</a>

potřebuji aby jeden z nich měl jinou třídu než ostatní podle toho na "kterém jsem".
když budu na http://web.cz/x.php tak aby to vypadalo:
<a href="x" class="b">neco</a>
<a href="y" class="a">neco</a>
<a href="z" class="a">neco</a>

analogicky pro ostatní případy.
WertriK
Profil *
Kdyz budes na stance http://web.cz/x.php tak to udelas tak jak jsi napsal. kdežto když budeš nas strance http://web.cz/?page=x tak to udelas nasledovne;

<a href="x" class="<? if ($page == "x") { echo "b"; } else { echo "a"; } ?>">neco</a>
<a href="y" class="<? if ($page == "y") { echo "b"; } else { echo "a"; } ?>">neco</a>
<a href="z" class="<? if ($page == "z") { echo "b"; } else { echo "a"; } ?>">neco</a>
ah01
Profil
Položky menu bych si spíš představil v menu (jak se tam dostanou je už na vás ;-)

$menu = array('x.php' => 'x', 'y.php' => 'y', 'z.php' => 'z');

takové pole bych pak vypsal

foreach ($menu as $adress=>$name) {
echo "<a href=\"$adress\" class=\"" . ($thisFile == $adress ? "b" : "a") . "\">$name</a>";
}

přičemž v proměnné $thisFile musí být název aktuálního souboru, což lze získat např. takto

$thisFile = basename($_SERVER['PHP_SELF']);
Anonymní
Profil *
Ne, to není můj případ.
mám pět stránek, každá je statická.
V každé je menu, tvořené z odkazů na všech pět stránek.
Chci aby byl odkaz (na stránku, kde zrovna jsem) jinak podbarven, takže mu chci dát jiný styl než ostatním odkazům.
Takže bych chtěl aby se porovnal odkaz s adresou stránky a pokud jsou shodné, tak získá styl odlišný od jiných,

http://web.cz/?page=x mít nebudu.
tiso
Profil
Ako máš vyriešený layout? Inkluduješ do každej stránky niečo ako layout.php? Alebo menu.php? čo obsahuje ten súbor?
Anonymní
Profil *
Statické menu, nijak se nevkládá, pokud by to pomohlo, klidně ho budu inkludovat jako php soubor, zatím při pěti stránkách nevidím důvod.
tiso
Profil
Tak potom si na 5-tich stránkach zmeň v tom menu v jednej položke class="a" na class="b"... A máš to hotové...
ah01
Profil
Pak ale nechápu, na co se ptáš. Výhoda řešení pomocí php je jedině pokud máš menu na jednom místě a "inkluduješ" ho do jednotlivých stránek. Pokud máš, ale menu fyzicky v každé stránce, tak toto řešení nepřináší téměř nic přínosného, spíše naopak.

To raději použij řešení čistě přes CSS pomocí třídy tagu body, což je, bych řekl, elegantnější (já toto řešení používám i u php stránek).
Anonymní
Profil *
No ono je to složitější. Mám administrační systém Bloxxy, který mi do stránky vloží to menu. V bloxy ho zadávám jako
[x|neco]
[y|neco]
[z|neco]

z čehož on vygeneruje

<a href="x">neco</a>
<a href="y">neco</a>
<a href="z">neco</a>

do statických stránek, takže až tady můžu jeden odkaz podbarvit přes css.

--------------- tlustá čára -----------

Ok, tlustá čára, chci tam ty odkazy vkládat přes PHP. Tedy přes include z nějakého souboru. Jak tedy v tomto případě zrealizuji svůj původní dotaz?
tiso
Profil
To si mal povedať skôr že tam máš nejakú administráciu... Tak sa treba pohrabať v nej a zmeniť to, je to lepšie ako menu vyhodiť z administrácie... Ja to robím takto:
 echo '

<div id="menu"><h2>Navigácia</h2>';
/*viacrozmerné pole linkov:*/
$links[0]=array("href" => "/", "title" => "Hlavná stránka", "text" => "Home");
$links[1]=array("href" => "novinky.php", "title" => "Novinky", "text" => "Novinky");
$links[2]=array("href" => "sluzby.php", "title" => "Ponúkané služby", "text" => "Služby");
$links[3]=array("href" => "kontakt.php", "title" => "Kontaktné údaje", "text" => "Kontakt");
foreach ($links as $value){
if($value["href"]==CurrentFile()){
echo '
<a href="'.$value["href"].'" title="'.$value["title"].'" class="active">'.$value["text"].'</a>';
}
else{
echo '
<a href="'.$value["href"].'" title="'.$value["title"].'">'.$value["text"].'</a>';
}
}
echo '
<hr class="hide" /></div>';

//zistenie mena suboru z ktoreho je volany layout - pre active link
function CurrentFile (){
$name=substr($_SERVER['PHP_SELF'], strrpos($_SERVER['PHP_SELF'], '/')+1);
if($name=="index.php"){$name="/";}
return $name;
}

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:

0