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.

Williams Azabache Sarmiento

Que puedo decir...