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.

