我正在使用一个在主页中显示新添加产品的模块。我需要自定义模块,以便此列表不包含已售出的产品。换句话说,如果产品在被禁止的天数之前缺货,则新产品已经结束,则不要在列表中显示该产品。
我可以使用{if $product.quantity < 0}{/if}
在视图中执行此操作,但我的目标是在控制器中执行它。这是我的代码:
function hookHome($params)
{
global $smarty, $cookie;
$nb = intval(Configuration::get('HOME_NEW_PRODUCTS_NBR'));
$rand = intval(Configuration::get('HOME_NEW_PRODUCTS_RANDOM'));
if ($rand == 1) {
$products = Product::getNewProducts(intval($cookie->id_lang), 0, $nb);
if ( $products )
{
shuffle($products);
array_slice($products, ($nb ? $nb : 10));
}
}
else
{
$products = Product::getNewProducts(intval($cookie->id_lang), NULL - 0, (intval($nb ? $nb : 4)), false, NULL, NULL);
}
$smarty->assign(array(
....
'products' => $products,
....
);
return $this->display(__FILE__, 'homenewproducts.tpl');
}
如何覆盖班级Product
,以便方法getNewProducts
考虑将产品缺货排除在外?
或者至少,如何使用PHP从$products
数量= 0的产品中删除?
感谢您的帮助。
答案 0 :(得分:2)
嗯,我现在使用的解决方案是:
在product.php
中,我在getNewProducts
内的NewProductsController
方法中更改了sql查询,以便考虑产品是否有库存
我在第2062行添加了AND 'quantity'!=0
,在第2086行添加了$sql->where('p.'quantity' != 0');
。 Prestashop 1.6.0.6。
当然,最好覆盖classe Product.php而不是修改它。
我希望它可以提供帮助。