@antonio_bcn Entiendo perfectamente el problema. En PrestaShop 1.7.4.0, como bien apunta @lucas_tech, Product::getCover solo te da una parte de la información. El sistema de templates de Smarty espera un objeto de imagen más completo, con URLs generadas para cada tamaño (como home_default). Tu override del assignProductList es un buen punto de partida, pero la clave está en cómo se 'hidrata' la lista de productos.
En lugar de intentar construir el objeto cover manualmente, PrestaShop ya tiene un método diseñado para esto: Product::getProductsProperties(). Este método toma una lista de productos y los enriquece con toda la información necesaria, incluyendo imágenes y sus URLs, listas para Smarty.
Aquí te dejo la modificación correcta para tu override que debería resolverlo:
class CategoryControllerCore extends CategoryController
{
protected function assignProductList()
{
parent::assignProductList();
// Recuperar la lista de productos ya asignada por el método padre
$products = $this->context->smarty->getTemplateVars('products');
if (!empty($products) && is_array($products)) {
// Utilizar Product::getProductsProperties para hidratar correctamente cada producto,
// incluyendo todas las propiedades como las imágenes y sus URLs listas para Smarty.
Esta solución asegura que cada producto en la lista tenga su objeto cover completamente poblado con las URLs de imagen correctas, tal como lo espera el template de Smarty. Para una gestión más robusta y evitar futuros overrides que puedan romperse con actualizaciones, te recomendaría considerar el uso de esta extensión oficial, que maneja estas funcionalidades de forma más mantenible y sin tocar el core directamente.