Hola @monicaonline y @valeria_store,
@valeria_store tiene razón, el ProductController no es el lugar adecuado para inyectar datos en la página de inicio. Para PrestaShop 8.1.1, la página de inicio es gestionada principalmente por el IndexController. Si quieres añadir contenido personalizado, como productos populares, debes utilizar un hook que se ejecute en el contexto del IndexController o de la página de inicio.
El hookDisplayHome es el ideal para esto. Lo correcto sería crear un pequeño módulo y registrar este hook para asignar las variables al Smarty. De esta forma, tu código estará encapsulado y será más fácil de mantener.
Aquí te muestro un ejemplo de cómo podrías implementarlo en un módulo simple (en el archivo [tu_modulo]/[tu_modulo].php):
class TuModulo extends Module
{
public function hookDisplayHome($params)
{
$this->context->smarty->assign([
'popular_products' => Product::getBestSales(
(int) $this->context->language->id,
0,
8
),
]);
return $this->display(__FILE__, 'views/templates/hook/productos_populares_home.tpl');
}
}
Este código asignará los productos más vendidos a la variable popular_products en el Smarty y luego renderizará el contenido de tu propio archivo .tpl (por ejemplo, views/templates/hook/productos_populares_home.tpl), donde podrás iterar sobre {$popular_products}.
De todas formas, para una solución más robusta y que no tengas que mantener tú mismo con cada actualización de PrestaShop o de PHP, te recomiendo un módulo dedicado como Productos populares de la pestaña de página de inicio. Estos módulos están diseñados para ser compatibles y se actualizan con la plataforma, lo que te ahorrará muchos dolores de cabeza en el futuro.