Hola @saratech,
Los compañeros @mateomoda y @inma_9689 van por muy buen camino. El problema es exactamente el que describen: el método parseMenuItems del módulo ps_mainmenu está diseñado para construir una estructura de menú específica y no incluye campos personalizados por defecto. Aunque getMenuItems recupere icon_class de la BD, parseMenuItems lo descarta al reconstruir la jerarquía.
Para solucionar esto, necesitas hacer un override del método parseMenuItems en modules/ps_mainmenu/ps_mainmenu.php (o, idealmente, crear un override en /override/modules/ps_mainmenu/ps_mainmenu.php para mantener la compatibilidad con futuras actualizaciones del módulo). Dentro de la reconstrucción de cada ítem del menú, debes añadir explícitamente tu campo icon_class.
Aquí te muestro cómo modificar el método parseMenuItems para incluir tu campo:
// En /override/modules/ps_mainmenu/ps_mainmenu.php (o el archivo original)
protected function parseMenuItems(array $items, $parentId = 0)
{
$menu = [];
foreach ($items as $item) {
if ($item['id_parent'] == $parentId) {
$menuItem = [
'id_ps_mainmenu_item' => $item['id_ps_mainmenu_item'],
'link' => $item['link'],
'title' => $item['title'],
Con esta modificación, icon_class se propagará correctamente en la estructura de $menuItems y estará disponible en tu plantilla Smarty. Una vez hecho esto, solo tendrás que modificar el .tpl del módulo (views/templates/hook/ps_mainmenu.tpl en Hummingbird) para renderizar el icono con {$item.icon_class}.
Ten en cuenta que hacer overrides de módulos estándar requiere un mantenimiento constante con las actualizaciones de PrestaShop. Para tiendas en producción o si buscas una solución más robusta y fácil de mantener, a menudo es mejor optar por un módulo para menú superior de bloque que ya esté diseñado para añadir estas funcionalidades sin tocar el core.