Hola @monicaonline y @irene_online,
Tenéis razón, modificar directamente los archivos del tema o los .tpl para añadir scripts externos es una práctica que trae muchos problemas de mantenimiento, sobre todo en PrestaShop 1.7.x, donde el tema Classic puede recibir actualizaciones y sobrescribir vuestros cambios. Además, la carga del SDK de Facebook debe gestionarse correctamente para evitar conflictos o cargas duplicadas.
La forma más limpia en PrestaShop es utilizar un módulo o un override bien estructurado para inyectar el JavaScript en el hookDisplayFooter o hookActionFrontControllerSetMedia. Esto asegura que el script se cargue una sola vez y en el lugar adecuado, sin afectar el rendimiento de la página.
Aquí tienes un ejemplo de cómo podrías cargar el SDK de Facebook a través de un hook en un módulo o override de controlador:
// En un módulo (ej: myfacebookcomments.php) o en un override de ProductController
// Si es un módulo, asegúrate de que el hook 'displayFooter' esté registrado en install()
// public function install() { return parent::install() && $this->registerHook('displayFooter'); }
public function hookDisplayFooter($params)
{
// Asegúrate de que estamos en una página de producto (o donde quieras los comentarios)
if ($this->context->controller->php_self == 'product') {
// Añadir el SDK de Facebook usando el método addJS o registerJavascript
$this->context->controller->addJS(
'https://connect.facebook.net/es_ES/sdk.js#xfbml=1&version=v10.0&appId=TU_APP_ID&autoLogAppEvents=1',
false // Indicar que no es un archivo local del tema
);
}
return ''; // Este hook no devuelve HTML directamente para los comentarios
}
Con este código en un módulo, el script de Facebook se cargará automáticamente en el footer de la página de producto. El div de comentarios (<div class="fb-comments" ...) puedes dejarlo en tu product.tpl o product-additional-info.tpl, pero ya no necesitarías el <script> asociado directamente ahí.
Para una solución aún más robusta y que no requiera tocar código ni overrides manuales, te recomiendo usar un módulo dedicado. Por ejemplo, el módulo Comentarios de Facebook de MyPresta.eu ya gestiona toda esta integración de forma automática y es compatible con las actualizaciones de PrestaShop, lo que te ahorra mucho tiempo y futuros dolores de cabeza.