Hola @qlio
La consulta del módulo es mucho mas compleja de lo que escribes. Hace join con varias tablas y podría ser que la falta de datos en alguna de las provoque que no aparezcan los productos que mencionas.
Si tienes curiosidad, la consulta que trae los productos se encuentra en el método estático "getNewProducts" de la clase Product
La consulta empieza con un
$sql->select( 'p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, pl.`available_now`, pl.`available_later`, image_shop.`id_image` id_image, il.`legend`, m.`name` AS manufacturer_name, (DATEDIFF(product_shop.`date_add`, DATE_SUB( "' . $now . '", INTERVAL ' . $nb_days_new_product . ' DAY ) ) > 0) as new' ); $sql->from('product', 'p'); $sql->join(Shop::addSqlAssociation('product', 'p')); $sql->leftJoin( 'product_lang', 'pl', ' p.`id_product` = pl.`id_product` AND pl.`id_lang` = ' . (int) $id_lang . Shop::addSqlRestrictionOnLang('pl') ); $sql->leftJoin('image_shop', 'image_shop', 'image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop=' . (int) $context->shop->id); $sql->leftJoin('image_lang', 'il', 'image_shop.`id_image` = il.`id_image` AND il.`id_lang` = ' . (int) $id_lang); $sql->leftJoin('manufacturer', 'm', 'm.`id_manufacturer` = p.`id_manufacturer`');
Como verás la creación de la consulta es bastante larga y continua.....
Fíjate que utiliza product_shop.date_add en lugar product.date_upd de para el cálculo de la fecha que decide si el producto es o no una novedad.
$sql->where('product_shop.`active` = 1'); if ($front) { $sql->where('product_shop.`visibility` IN ("both", "catalog")'); } $sql->where('DATEDIFF(product_shop.`date_add`, DATE_SUB( "' . $now . '", INTERVAL ' . $nb_days_new_product . ' DAY ) ) > 0');
Espero te sirva