Zvýraznění aktuální položky v menu s pomocí PHP

Zvýraznění položky v menuPředstavme si klasický web. Zcela určitě na něm naleznete menu. K usnadnění orientace přitom může pomoci zvýraznění stránky, na které se uživatel momentálně nachází. Zdá se přitom, že jde o zanedbatelnou drobnost, schopnost pohybovat se na daném portálu s jistotou se však stává klíčovým požadavkem.

K odlišení zvolené položky často plně postačí změnit její pozadí. O samotnou obměnu barvy se přitom starají kaskádové styly. Pokud si dnes stáhnete libovolnou bezplatnou šablonu, bývá již obvykle dostatečně připravena. Zvýraznění provádí přiřazení patřičného id samotnému odkazu nebo tagu li.

<ul>
<li id="current"><a href="login.php" ><span>Přihlásit se</span></a></li>
<li><a href="register.php" ><span>Registrace</span></a></li>
<li><a href="faq.php" ><span>FAQ</span></a></li>
</ul>

Uvedený příklad může vypadat například takto:

Menu

Nyní si ve stručnosti představíme jednotlivé způsoby, které lze pro zvýraznění použít. U jednoduchého statického a opravdu nerozsáhlého webu lze přistoupit k manuálnímu připsání dotyčného id u každého souboru. V případě rozsáhlejšího projektu lze nastíněný problém řešit buď na straně serveru nebo použít JavaScript. Tento skriptovací jazyk se mi zde však nezdá jako příliš vhodný, protože jej daný návštěvník nemusí mít povolený. Zbývá tedy varianta odeslání do prohlížeče již vhodně upravené stránky, kde id bude patřit vybrané součásti z menu. Původně jsem myslel, že v PHP budu muset vytvořit velký počet podmínek, existuje však mnohem elegantnější zápis.

O vše se postará následující řádek:

if (strpos($_SERVER['PHP_SELF'], 'login.php')) echo ' id="current"';

Globální proměnná $_SERVER[‚PHP_SELF‘] obsahuje cestu k aktuálnímu souboru. Pokud v ní funkce strpos nalezne zadaný řetězec (v našem případě login.php) vrátí pozici, na které začíná. V případe žádného výskytu se dočkáme FALSE. Výpis id=“current“ se proto u nevyhovující podmínky neprovede.

Nyní již jen stačí zmíněný kousek kódu umístit na patřičné místo. Obvykle záleží na tom, zda chcete nastavit id tagu a nebo li. Náš příklad vyžaduje druhou možnost, a proto pro zajištění plné funkčnosti postupuji následovně:

  echo '<li';
  if (strpos($_SERVER['PHP_SELF'], 'login.php')) echo ' id="current"';
  echo '><a href="login.php" ><span>Přihlásit se</span></a></li>';
 
 echo '<li';
  if (strpos($_SERVER['PHP_SELF'], 'register.php')) echo ' id="current"';
  echo '><a href="register.php" ><span>Registrace</span></a></li>';

 echo '<li';
  if (strpos($_SERVER['PHP_SELF'], 'faq.php')) echo ' id="current"';
  echo '><a href="faq.php" ><span>FAQ</span></a></li>';

Napsat komentář