function GetDeepMenuArr($act,$tablename,$parentid,$maxlevel,$level,$activearr,$showallsubitems=false/* Выбирать все подпункты или только у активного пункта*/) { global $par,$langadd; $resarr = Array(); //делаем выборку всех видимых пунктов меню уровня $sql1 = "SELECT * FROM $tablename WHERE parentid=$parentid AND hide=0 ORDER BY prior"; $res1 = mysql_query($sql1); $nrows1 = mysql_num_rows($res1); if($nrows1>0) { while($line1 = mysql_fetch_array($res1,MYSQL_ASSOC)) { $t = Array(); $url1 = GetSeoUrl($act,$line1['id'],$line1); // echo '<li '.TrueStr(in_array($line1['id'],$activearr),' class="active" ').' ><a href="'.$url1.'">'.htmlspecialchars($line1['title'.$langadd]).'</a>'; $t['id'] = $line1['id']; $t['url'] = $url1; $t['title'] = $line1['title'.$langadd]; if(in_array($line1['id'],$activearr)) $t['isactive'] = true; //если опция покаpывать все подпункты, или если пункт активный - то раскрываем подкатегории if($showallsubitems || in_array($line1['id'],$activearr)) { $t['subarr'] = GetDeepMenuArr($act,$tablename,$line1['id'],$maxlevel,$level+1,$activearr,$showallsubitems); } $resarr[] = $t; } } return $resarr; }
<? $activecatid = 0; if($act=="cat") $activecatid = $id; if($act=="tovar") { $sql = "SELECT * FROM $par->objectstable WHERE id=$id"; $res = mysql_query($sql); if($line = mysql_fetch_array($res,MYSQL_ASSOC)) $activecatid = $line['categid']; } $activearr = GetActiveArr('cat',$par->categorytable,$activecatid); // PrintDeepMenu('cat',$par->categorytable,0,3,1,$activearr); $_logic['maincatarr'] = GetDeepMenuArr('cat',$par->categorytable,0,3,1,$activearr,false); //Debug('<pre>'.print_r($a,true).'</pre>'); ?>