Hola @irene_online,
Los compañeros @inmaes82 y @felix_es35 han apuntado muy bien al problema. La causa raíz es que al devolver directamente una etiqueta <script> desde hookDisplayHeader, estás omitiendo el gestor de assets de PrestaShop. Esto evita que el script sea procesado correctamente por el sistema de caché y concatenación, y puede llevar a problemas de carga, conflictos o que no se incluya en el lugar óptimo del HTML.
Para PrestaShop 8.1.7, la forma correcta de añadir un script externo es utilizando el método addJS del controlador. Esto permite que PrestaShop lo incluya de forma controlada y compatible con el resto de la tienda. Aquí te muestro cómo modificar tu método hookDisplayHeader:
class MyTwitterWidget extends Module
{
// ... (otras partes de tu clase)
public function hookDisplayHeader($params)
{
// Usa addJS para que PrestaShop gestione el script correctamente
$this->context->controller->addJS('https://platform.twitter.com/widgets.js', null, true);
// Si necesitas un contenedor HTML para el timeline de Twitter, deberías
// cargarlo en un archivo .tpl y luego renderizar ese .tpl en otro hook
// (por ejemplo, displayFooter o un hook personalizado en el sidebar).
// Pero para cargar el script principal de Twitter, con addJS es suficiente aquí.
return ''; // No devuelvas HTML directamente para el script de carga.
}
}
Con esta modificación, el script de Twitter se cargará de forma asíncrona y de una manera más compatible con PrestaShop. Para una solución más completa y mantenible, especialmente si necesitas configurar el widget (ID de timeline, tema, etc.) desde el back office sin tocar código, te recomendaría un módulo para widget de twitter gratis que gestiona toda la integración de forma profesional y te evita problemas en futuras actualizaciones del tema o de PrestaShop.