在Opencart中按两个参数排序

时间:2016-03-12 08:03:58

标签: php opencart

我希望我的产品按两个参数排序:首先是每个产品的“排序顺序”;然后按数量。

以下是我在文件/catalog/controller/product/category.php(Opencart 1.5.6.4)中的内容,我相信这里应该以某种方式改变:

if (isset($this->request->get['sort'])) {
    $sort = $this->request->get['sort'];
} else {
    $sort = 'p.sort_order';
}

任何人都有任何想法?提前致谢

1 个答案:

答案 0 :(得分:2)

默认情况下,Opencart一次只使用一个字段进行排序。要完成您所描述的内容,您需要修改getProducts()中构建的/catalog/model/catalog/product.php方法的查询。找到它所在的第196行:

$sql .= " ORDER BY p.sort_order";

这是未指定时的默认排序顺序。要添加辅助排序条件,您可以将其更改为:

$sql .= " ORDER BY p.sort_order, p.quantity";

如果始终想要将quantity用作辅助排序字段,则可以在整个块之后添加如下:

    } else {
        $sql .= " ORDER BY p.sort_order";   
    }

    $sql .= ", p.quantity";

无论指定了哪个主要排序字段,都会按数量排序为辅助字段。