Php Opencart 1.5.5.1:从功能模块中删除隐藏的产品

Php Opencart 1.5.5.1:从功能模块中删除隐藏的产品,php,if-statement,opencart,Php,If Statement,Opencart,我将特色模块设置为显示8种产品。我在特色模块中加载了16种产品。当我禁用网页上显示的某个产品时,它不会将其替换为已启用的产品。所以网页上有一个空白点 我不知道如何解决这个问题。我在第24行的catalog/controller/module/featured.php中查找: foreach ($products as $product_id) { $product_info = $this->model_catalog_product->getProduct($pr

我将特色模块设置为显示8种产品。我在特色模块中加载了16种产品。当我禁用网页上显示的某个产品时,它不会将其替换为已启用的产品。所以网页上有一个空白点

我不知道如何解决这个问题。我在第24行的catalog/controller/module/featured.php中查找:

foreach ($products as $product_id) {
         $product_info = $this->model_catalog_product->getProduct($product_id);
我想用if-else语句来包装这个foreach,比如:

If ($product is disabled) {
     skip to next product 
}
else {
     foreach ($products as $product_id) {
              $product_info = $this->model_catalog_product->getProduct($product_id);
     ...
     ...
     ...
}
我想试试这样的东西:

if ($product_id['status'] == 0) {
    no idea here
}
else{
     foreach ($products as $product_id) {
              $product_info = $this->model_catalog_product->getProduct($product_id);
     ...
     ...
     ...
}
但同样,不确定
if($product_id['status']==0)
是否正确,甚至不确定if语句中的产品如何处理(如果正确)


谢谢。

我明白你的意思了。这是编写本模块的人的疏忽

您需要在设置限制之前过滤禁用的产品,即:在
catalog/controller/module/featured.php中查找此行:

$products = array_slice($products, 0, (int)$setting['limit']);
在之前,添加:

// filter out disabled products befor setting limit

foreach ($products as $k => $v){
    $p_info = $this->model_catalog_product->getProduct($v);
    if ($p_info['status']==0) {
        unset ($products[$k]);
    }
}
就这些。
顺便说一句,发现这个缺点做得很好。

完美。我快疯了。。尝试if(){continue;}并查看如何取消product_info['quantity']==0以及其他各种错误的内容。。。。。帮我省了一个晚上的压力,再次谢谢。