Исключить вывод товаров из некоторых подкатегорий в Opencart 3
Цена договорная
Здравствуйте. Сделал вывод всех товаров в подкатегориях в родительской, но нужно исключить товары из некоторых категорий. (В списке генераторов не должно быть АВР и альтернаторов).
Ниже мои правки, но возникает ошибка.
Насколько понимаю, нужно добавить условия: если категория — не генераторы и у товара нет исключённых категорий.
В модели товара в функции getProducts() скопировал, добавил и переделал:
} else if (!empty($data['filter_category_id'] AND $data['filter_category_id'] == 61)) {
if (!empty($data['filter_sub_category'])) {
$sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id) WHERE p2c.category_id NOT IN ('909', '53')";
} else {
$sql .= " FROM " . DB_PREFIX . "product_to_category p2c";
}
if (!empty($data['filter_filter'])) {
$sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)";
} else {
$sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)";
}
Комментарий: добавил: WHERE p2c.category_id NOT IN ('909', '53') (909 и 53 — id исключённых категорий) и в начале — проверку на id открытой категории (61).
Но возникает ошибка, только у этой категории:
Fatal error: Uncaught Exception: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_d' at line 1<br />Error No: 1064<br />SELECT p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMI in /home/c/ca34391/storage1/modification/system/library/db/mysqli.php on line 43
Могу заплатить за консультацию или выслать файл с кодом. Желательно, без доступа к сайту (нужно согласовывать с владельцем). Но, если нужно, то спрошу.
Ниже мои правки, но возникает ошибка.
Насколько понимаю, нужно добавить условия: если категория — не генераторы и у товара нет исключённых категорий.
В модели товара в функции getProducts() скопировал, добавил и переделал:
} else if (!empty($data['filter_category_id'] AND $data['filter_category_id'] == 61)) {
if (!empty($data['filter_sub_category'])) {
$sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id) WHERE p2c.category_id NOT IN ('909', '53')";
} else {
$sql .= " FROM " . DB_PREFIX . "product_to_category p2c";
}
if (!empty($data['filter_filter'])) {
$sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)";
} else {
$sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)";
}
Комментарий: добавил: WHERE p2c.category_id NOT IN ('909', '53') (909 и 53 — id исключённых категорий) и в начале — проверку на id открытой категории (61).
Но возникает ошибка, только у этой категории:
Fatal error: Uncaught Exception: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_d' at line 1<br />Error No: 1064<br />SELECT p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMI in /home/c/ca34391/storage1/modification/system/library/db/mysqli.php on line 43
Могу заплатить за консультацию или выслать файл с кодом. Желательно, без доступа к сайту (нужно согласовывать с владельцем). Но, если нужно, то спрошу.
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.
Спасибо за помощь. Был рад сотрудничеству.