openart 1.5.5.1:从特色模块中删除隐藏产品


Opencart 1.5.5.1: Remove Hidden Products from Featured Module

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

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

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]);
    }
}

。顺便说一下,很好地发现了这个缺点。