如何在opencart中对我的产品进行排序,如下所示,
所有产品将按订单排序,但缺货产品(即数量= 0)将列在该类别的末尾!
答案 0 :(得分:2)
在opencart 2.2中,您必须更改catalog \ model \ catalog \ product.php
找到
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY LCASE(" . $data['sort'] . ") ";
} elseif ($data['sort'] == 'p.price') {
$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
} else {
$sql .= " ORDER BY " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.sort_order";
}
并在" ORDER BY"
之后添加其他订单规则 p.quantity< 1if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY p.quantity<1, LCASE(" . $data['sort'] . ") ";
} elseif ($data['sort'] == 'p.price') {
$sql .= " ORDER BY p.quantity<1, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
} else {
$sql .= " ORDER BY p.quantity<1, " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.quantity<1, p.sort_order";
}
答案 1 :(得分:0)
您可以有2个查询。 一个,其中quantity != 0 ORDER BY sort_order
和秒 quantity = 0
。然后,您可以合并记录并获得所需的输出。