Hola @hector_9426 y @joaquin_bici,
@joaquin_bici tiene razón. En PrestaShop 1.7.0.3, devolver directamente un string con el script en hookDisplayFooter puede ser inconsistente. La forma más robusta y compatible con la arquitectura de PrestaShop es asignar la clave de tu cuenta a Smarty y luego renderizar un archivo .tpl específico para el script.
Así, te aseguras de que Smarty lo procese correctamente y el script se inyecte de forma limpia. Aquí te dejo cómo podrías modificar tu método hookDisplayFooter en tu módulo:
Primero, tu archivo PHP del módulo:
public function hookDisplayFooter($params)
{
$this->context->smarty->assign(array(
'zopim_account_key' => 'TU_CLAVE_DE_CUENTA_AQUI'
));
return $this->display(__FILE__, 'views/templates/hook/zopim_chat.tpl');
}
Luego, necesitas crear un archivo zopim_chat.tpl dentro de views/templates/hook/ en la carpeta de tu módulo. El contenido sería este:
<script type="text/javascript">
window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set._.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8");$.src="https://v2.zopim.com/?{$zopim_account_key}";z.t=+new Date;$.type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script");
</script>
Con esto, la clave de tu cuenta se pasa a la plantilla y el script se renderiza de forma controlada. Para una solución más mantenible, sin tener que tocar código directamente y que sea resistente a actualizaciones de PrestaShop o del tema, siempre es recomendable usar un módulo dedicado. Puedes echar un vistazo a la herramienta de zopim zendesk chat gratis que simplifica mucho este proceso.