Функция для генерации меню primary_links

Главные вкладки

Аватар пользователя zaartix zaartix 30 августа 2007 в 17:05

Функция возвращает хтмл код меню primary links, меню развернуто на 2 уровня, отмечены активные пункты.

На входе функция принимимает массив из 4 элементов, пр помощи которых будет генерироваться меню.

<?php
function gen_menu($template = array('ul','class','menu','li'))
{
$current_mid = menu_get_active_item();
$sql = "SELECT p.mid AS p_mid, p.title AS p_title, p.path AS p_path, c.mid AS c_mid, c.title AS c_title, c.path AS c_path
FROM menu AS root
LEFT JOIN menu AS p ON p.pid = root.mid
LEFT JOIN menu AS c ON c.pid = p.mid
WHERE root.pid Shok
ORDER BY root.pid, p.pid, p.weight, c.pid, c.weight";
$queryResult = db_query($sql);
$p_mid = 0;
while ($m = db_fetch_object($queryResult)) {
$c_mid = $m->c_mid;
if ($m->p_mid!=$p_mid) {
$p_mid = $m->p_mid;
$array[$p_mid]['title'] = $m->p_title;
$array[$p_mid]['href'] = $m->p_path;
}
if ($c_mid) {
$array[$p_mid]['childs'][$c_mid]['title'] = $m->c_title;
$array[$p_mid]['childs'][$c_mid]['href'] = $m->c_path;
if ($current_mid==$c_mid) {
$array[$p_mid]['childs'][$c_mid]['active'] = true;
$array[$p_mid]['active'] = true;
}
}
}
$return = '';
foreach ($array as $k=>$v) {
$return.="<{$template[0]} {$template[1]}=\"{$template[2]}\">";
$active = $v['active'] ? 'class="active"' : '';
$return.="<{$template[3]}>{$v['title']}";
if (sizeof($v['childs'])) {
$return.="<{$template[0]}>";
foreach ($v['childs'] as $v1) {
$active = $v1['active'] ? 'class="active"' : '';
$return.="<{$template[3]}>{$v1['title']}";
}
$return.="";
}
$return.="";
}
return $return;
}
?>

Комментарии