Hola @fernando_lab, tus compañeros @raulonline y @claudiahub están en lo cierto. El hookDisplayHome es ideal para añadir contenido, pero no maneja la lógica de 'pestañas' por sí mismo. El problema principal de tu código es que ProductSale::getBestSalesLight() solo te da datos básicos. Para que Smarty renderice los productos como esperas (con todas sus propiedades y formato del tema), necesitas 'hidratar' esos datos.
Aquí tienes cómo deberías procesar la lista de productos antes de asignarlos a Smarty:
// En tu_modulo/tu_modulo.php, dentro de hookDisplayHome
public function hookDisplayHome($params)
{
$bestSellersData = ProductSale::getBestSalesLight((int)$this->context->language->id, 0, 8);
// La clave es procesar los datos para que Smarty pueda renderizarlos correctamente
$productsReady = Product::getProductsProperties((int)$this->context->language->id, $bestSellersData);
$this->context->smarty->assign([
'products_best_sellers' => $productsReady,
'best_sellers_tab_label' => $this->l('Más Vendidos')
]);
return $this->display(__FILE__, 'module:tu_modulo/views/templates/hook/home_best_sellers_tab.tpl');
}
Con este cambio, $productsReady contendrá objetos de producto completos listos para ser usados en tu plantilla Smarty (home_best_sellers_tab.tpl). Sin embargo, como bien apunta @claudiahub, la parte de crear una pestaña funcional sigue siendo un desafío, ya que requiere modificaciones en el HTML, CSS y JavaScript de tu tema.
Para evitar tocar el código core del tema y asegurarte de que tu tienda siga siendo fácil de actualizar, te recomiendo una solución modular. Puedes gestionar los más vendidos sin tocar el código core con un módulo dedicado que ya incluye toda la lógica para mostrar los más vendidos como una pestaña en la página de inicio, integrándose perfectamente con el tema Classic y siendo compatible con las actualizaciones de PrestaShop.