хуйу нас не матерятся
У товаров есть замечательное свойство- связанные товары. Opencart одновременно проставляет связи и на текущий товар и на выбранный товар. Например: если мы к телефону добавляем связанный продукт- чехол, то и к чехлу автоматически добавляется связанный продукт телефон. В таком виде эта опция малоприменима, т.к. обычно к выбранному товару подбираются аксессуарны, а не наоборот.
Сейчас мы это исправим. Открываем: /admin/model/catalog/product.php и находим:
if (isset($data['product_related'])) {
foreach ($data['product_related'] as $related_id) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'");
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'");
$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'");
}
}
Комментируем лишнее и получаем:
if (isset($data['product_related'])) {
foreach ($data['product_related'] as $related_id) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'");
//$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'");
//$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'");
}
}
Далее находим:
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'");
if (isset($data['product_related'])) {
foreach ($data['product_related'] as $related_id) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'");
$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'");
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'");
$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'");
}
}
Опять комментируем лишнее:
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");
//$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'");
if (isset($data['product_related'])) {
foreach ($data['product_related'] as $related_id) {
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'");
$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'");
//$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'");
//$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'");
}
}
Комментируем строчку:
$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'");
Всё, теперь этот модуль работает именно как сопутствующие товары. Opencart теперь не добавляет обратную связь в связанный товар. Но теперь что бы правильно работали сопутствующие товары, opencart придётся перенастроить. Зайдите в каждый ранее связанный товар и пере привяжите его по новой.
Задача не понятна. "2 товара, которые следуют перед текущим", следуют где? В списке товаров в админке? И вывести куда? под/вместо модуля "связанные товары"?
Да, которые следуют в текущем каталоге перед текущим товаром и после. Под место связанных товаров, или после них.
К сожалению в таком виде простого рецепта не существует. Нужно переделывать как контроллер так и шаблон.
Инструкция написана для OpenCart 2.x? А то вдруг не подойдет, мне решение подходит ваше.
Здравствуйте! Можете подсказать, как добавить кнопки "купить" к сопутствующим товарам?
Здравствуйте, попробовал на Окстор 2.1* что то не получается убрать взаимосвязь. Не подскажете в чем причина?
Здравствуйте! Очень интересно было бы увидеть как вывести 2 товара, которые следуют перед текущим, и 2 товара после текущего. Спасибо Вам!