Autor Zpráva
sparky
Profil *
Zdravím mám menu, jehož část se vypisuje z databáze viz:
function getLink($id){
    global $cfg;

    $dot="SELECT id, titleUrl, title, `order`, parent FROM {$cfg['tbl_article']} WHERE parent='{$id}' ORDER BY `order` DESC, id DESC";
    $nav=queryDBdata ($dot);
    
  if(!empty($nav)){
  
  $result = "";
      if($nav[0]['parent']!= 0){$result.="<ul class='submenu'>";}
      for($i=0; $i<count($nav);$i++){
                $result.="<li>";
                $result.="<a href='" . PATH_HTTP . "{$nav[$i]['id']}/page/{$nav[$i]['titleUrl']}' title='{$nav[$i]['title']}'>{$nav[$i]['title']}</a>";     
                $result.=getLink($nav[$i]['id']);
                $result.="</li>";
            }
      if($nav[0]['parent']!= 0){$result.="</ul>";}    
    return $result;
  
  }
}

A potřeboval bych udělat, aby při kliknutí na položku ze submenu byl aktivní nejvyšší parent položky na kterou se klikne. Zkoušel jsem to pomocí jquery, ale při kliknutí na položku v submenu se parent z aktivní, ale vzápětí class active z mizí při přenačtení stránky.
jefitto44
Profil
Musíš nejako zistiť, na ktorej podstránke sa nachádzaš a k danej položke menu potom vypísať napr. class="active"

Neviem aký máš vnútorný engine stránky, ale napr. Máš niekde nejakú $page_id tak v tom výpise si to upravíš na

 for($i=0; $i<count($nav);$i++){
                $result.="<li ".(($nav[$i]["id"]==$page_id)? 'class="active"':'').">";
                $result.="<a href='" . PATH_HTTP . "{$nav[$i]['id']}/page/{$nav[$i]['titleUrl']}' title='{$nav[$i]['title']}'>{$nav[$i]['title']}</a>";     
                $result.=getLink($nav[$i]['id']);
                $result.="</li>";
            }

Napísal som to kus jak pinďur, zrejme tam budú aj syntax error kvôli úvodzovkám, ale takto nejako by to mohlo fungovať.

PS: Prečo vypisuje veci z DB pomocou for a prečo ich nerobíš cez while(mysqli_fetch)?
sparky
Profil *
jefitto44:
Takovéto řešení mi ale nezaktivuje parenta dané položky. Budu vědět, která položka menu je aktivní, ale nebudu vědět jaký parent má být aktivní.

Přes for vypisuju, protože mám pro vytvořenou funkci pro zjištění položek z databáze.
Taps
Profil
sparky:
Jaká je struktura URL adresy? Pokud v ní máš id parenta, tak postup už nastínil jefitto44.
<?
$aktivni = ($nav[0]['parent'] == $id) ? "active" : FALSE;
  if($nav[0]['parent']!= 0){$result.="<ul class='submenu ".$aktivni."'>";}
  ?>
sparky
Profil *
Taps:
id parenta v ni mám, ale nevím jestli to teď správně chápu...

Mám menu horizontální menu:

ODKAZ - ODKAZ - ODKAZ - ODKAZ - ODKAZ - ODKAZ (hlavní menu)
|
pododkaz
|
pododkaz

Výpis provádím výše uvedeným způsobem a potřebuji aby, když kliknu na odkaz nižší úrovně, tak aby byl zvýrazněn (aktivní, nastylován) ODKAZ v hlavním menu
Taps
Profil
sparky:
Tak ten můj kod by měl fungovat. Nutné je do css přidat třídu active
sparky
Profil *
Taps:
Díky za pomoc, špatně jsem porovnával parentID s ID stránky, teď už mi to běží.

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