Hola @rubendigital y a todos, muy buenas observaciones. @paula_pro y @ivan24 han dado en el clavo. El problema es doble:
- Uso incorrecto del hook: El
hookDisplayHeader es para la sección <head> de tu HTML. Aunque tu variable se asigna a Smarty, nada la está llamando ni renderizando en el <body>.
- Falta de renderizado de plantilla: Incluso si usaras un hook de contenido, necesitas llamar al método
display() de tu módulo para que PrestaShop renderice un archivo .tpl específico de tu módulo. Sin esto, la variable de Smarty se asigna, pero no se utiliza en ninguna plantilla para mostrarla.
Estás en PrestaShop 8.1.5, que tiene una arquitectura robusta, pero requiere usar los hooks correctamente. Para tu caso, una solución limpia y mantenible es usar un módulo dedicado para gestionar estos bloques HTML. Los overrides o las modificaciones directas en el tema pueden causar problemas de compatibilidad con futuras actualizaciones de PrestaShop o de tu tema.
Para esto, existe el módulo HTML Box Pro - contenidos personalizados que te permite añadir y gestionar contenido HTML en diferentes posiciones de tu tienda de forma sencilla desde el Back Office, sin necesidad de tocar código. Es la manera más segura y eficiente.
Si aún así quieres implementar esto con código en tu módulo, aquí tienes cómo sería la estructura correcta para un hook de contenido (por ejemplo, displayHome) que renderiza una plantilla:
public function hookDisplayHome($params)
{
$this->context->smarty->assign([
'my_custom_html_content' => '<p>Mi bloque HTML personalizado cargado con éxito en el home.</p>'
]);
// Aquí es donde se le indica a PrestaShop que renderice una plantilla
return $this->display(__FILE__, 'views/templates/hook/myhtmlblock_home.tpl');
}
// Y en tu archivo: modules/myhtmlblock/views/templates/hook/myhtmlblock_home.tpl
// {$my_custom_html_content nofilter}
Con esta corrección, asegúrate de crear el archivo .tpl y luego engánchalo al displayHome desde la sección 'Diseño > Posiciones' en tu Back Office si no lo haces programáticamente en la instalación del módulo. Espero que esto te ayude a aclarar el proceso.