Hola @ivan92,
Comprendo la necesidad de una funcionalidad de productos relacionados más potente. Como bien indican @mariaweb y @pedrolab, tu enfoque de override directo en ProductController con consultas SQL crudas es muy frágil, especialmente en 1.7.1.1 y futuras actualizaciones de la serie 1.7.x o incluso migrando a PrestaShop 8 o 9. La principal debilidad de tu snippet es que Db::getInstance()->executeS() devuelve datos en formato array, no objetos Product, lo que dificulta su uso posterior en plantillas y no aprovecha la lógica de negocio de PrestaShop (precios con impuestos, stock, etc.).
La forma correcta de obtener productos en PrestaShop es utilizando la clase Product y sus métodos estáticos, o Product::getProducts() si necesitas filtros más complejos. Aquí te muestro un ejemplo de cómo se podría hacer de forma más limpia en un módulo, usando un hook como displayProductExtraContent o displayFooterProduct:
// Ejemplo de un método en un módulo que usa Product::getProducts
// Esto es mucho más robusto que SQL directo.
class MyCustomRelatedModule extends Module
{
public function hookDisplayProductExtraContent($params)
{
// Asegúrate de que el hook recibe el objeto Product
if (!isset($params['product']) || !($params['product'] instanceof Product)) {
return [];
}
Este snippet es una base. Para implementar una funcionalidad realmente "Pro" que incluya productos por historial de navegación, compras anteriores, algoritmos de recomendación, o gestión manual desde el back office, el desarrollo es considerable y un simple override o módulo básico se queda corto. Además, con cada salto de versión de PHP (especialmente a PHP 8.x) o de PrestaShop, estas soluciones custom requieren un mantenimiento constante para evitar roturas.
Para automatizar productos relacionados en la tienda de forma completa, escalable y sin preocuparte por la compatibilidad futura, te recomiendo usar un módulo dedicado. Estos módulos están diseñados para estas funcionalidades avanzadas, se actualizan con las nuevas versiones de PrestaShop y PHP, y te ofrecen una interfaz amigable en el back office para configurar tus reglas de productos relacionados sin tocar una línea de código.