Luego de ausentarme por varios meses debido a proyectos personales, vuelvo a traerles un tutorial y esta vez es sobre cómo crear un menu multinivel con php.
Para este tutorial, usaremos arrays que contengan la siguiente estructura:
$menu_array = array( array('id'=>…, 'padre_id'=>…, 'nombre'=>…, 'url'=>…), array('id'=>…, 'padre_id'=>…, 'nombre'=>…, 'url'=>…), ... );
Como podemos ver, tenemos los campos id, padre_id, nombre y url. Este array también se puede obtener si tenemos una base de datos, así que no tendrás problema en acoplarlo.
Luego de tener declarado nuestra variable $menu_array, el cuál contiene los items del menu, tenemos que realizar una función recursiva la cual verifique si el padre_id es igual al id actual del item para listar los hijos. Para ello, tenemos ésta simple función:
function generar_menu($array,$padre_id = 0) { $menu_html = '<ul>'; foreach($array as $elemento) { if($element['padre_id']==$padre_id) { $menu_html .= '<li><a href="'.$elemento['url'].'">'.$elemento['nombre'].'</a>'; $menu_html .= generar_menu($array,$elemento['id']); $menu_html .= '</li>'; } } $menu_html .= '</ul>'; return $menu_html; } echo generar_menu($menu_array,0);
Como podemos ver en la función anterior, hacemos un foreach para entrar a cada item del menu y, suponiendo que el padre_id del menu padre es 0, verificamos si es que tiene hijos para luego concatenarlo con la variable $menu_html, el cuál generará un listado con los datos requeridos.
De esta manera, podemos crear nuestro menu multinivel de una manera rápida y sencilla con php. Si tienes alguna duda, no lo pienses dos veces y comentalo para poder ayudarte.