Hice otro artículo explicando esto mismo pero en la versión 1.6.0.8 de Prestashop pero al actualizar me di cuenta de que esa solución ya no servía por lo que aqui pongo la nueva que he tomado.

Yo lo hago modificando el módulo porque si las ocultase con CSS como he visto explicado en otros foros aunque no mostrasemos esas categorías al usuario tanto el servidor como el navegador tendrían que procesarlas igualmente con la penalización de tiempo que eso conlleva para nuestra tienda.

Buscamos el fichero:

/modules/blocktopmenu/blocktopmenu.php

Y dentro de el la línea que es tal que así:

 $html .= $this->generateCategoriesMenu($category['children'], 1);

y añadimos un if para que solo se cumpla si la profundidad de la categoría es menor de 3 es decir se mostrarían las categoráis de padre e hijo pero no las siguientes (recordemos que prestashop muestra hasta 5 niveles)
Por lo que añadimos un IF a esa linea (y su llave de cierre) y ya solo se nos mostrarán las categoráis padre e hijo.

 if ( $category['level_depth'] < 3){
                $html .= $this->generateCategoriesMenu($category['children'], 1);
        }

NOTA: el valor de «level_depth» podemos moficarlo también para 2 y solo se mostrarían los padres o 4 y solo se mostrarían los 3 primeros niveles.