我想在Opencart 2.3.0.2上搜索制造商的产品。
在catalog/model/catalog/product.php
上
在此之前
$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)
我把这段代码放在:
$sql .= " LEFT JOIN " . DB_PREFIX . "manufacturer m ON (m.manufacturer_id = p.manufacturer_id) ";
在这行之前:
$sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
我把这段代码
$sql .= " ORDER BY p.quantity<1, LCASE(" . $data['sort'] . ")";
但它告诉我:
未知:无法在catalog\model\catalog\product.php上将DB类的对象转换为字符串
如何在表制造商上搜索名称并按制造商向我的客户显示产品
发布于 2019-03-28 03:58:14
试试这段代码吧,它会帮助你
您的最后一个order by code是错误的-请删除此代码
$sql .= " ORDER BY p.quantity<1, LCASE(" . $data['sort'] . ")";
请在下面执行此操作
在此之前
$sql .= " GROUP BY p.product_id";
将此代码放入
$sql .= " AND p.quantity > 0";
您必须为大于零的数量注释此代码
/* comment this code
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";
}
*/
并添加以下内容
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY p.quantity, 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 p.quantity, " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.quantity, p.sort_order";
}
https://stackoverflow.com/questions/55344351
复制相似问题