Mennyire beteg megoldás?

danart képe

Sziasztok,

nézettel előállítottam pár oldalt (egy foglalási folyamat oldalai), ahol a kiválasztások egyszerű /arg1/arg2 formában kerülnek továbbadásra. Ez megy szépen, az egészet végül egy tartalom típusnak adom tovább a már "megírt módon.

Jött az igény, hogy na de legyen aktív az egyik menüpont, míg az oldalakon végiglépked a látogató...

3 oldalról lévén szó, modult nem akartam csatasorba állítani.

Minthogy az átadott argumentumok miatt sok a lehetséges url (jelentkezes/modul/arg1/arg2; jeletkezes/letszam/arg1/arg2), van így az url-t nem tehettem a feltételbe, így született az alábbi megoldás.

Megvizsgálom a 2. url tagot (pl. modul) és ha tuti, akkor a menü tulajdonságaiban beállítom az active osztályt.

function theme_preprocess_page(&$variables, $hook) {
  $part = explode("/", $_GET['q']); 
  if (isset($part['1'])) {
    switch ($part['1']) {
      case 'argumentum':
        $variables['main_menu']['menu-452']['attributes'] = array('class' => array('active'));
        break;
      case ...
    }
  }
}

A feladatát rendben szolgálja.
Csak a ötletelés kedvéért küldtem be, hátha van szebb, hatékonyabb megoldás - ill. hátha másnak jól jöhet.

Üdv.:
Dani

Drupal verzió: 
sgabe képe

A Context modullal beállítható, hogy adott útvonalon, adott menüpontot aktívnak jelöljön. Érdemes kipróbálni, mert tud még egyet s mást ezen kívül.

1
0
aboros képe

akkor talán annyit még tegyél meg, hogy nem kézzel robbantod a getkút, hanem használod a csodálatos arg() függvényt.

2
-1

-
clear: both;