Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Рекомендуемые в 2 стороны


Recommended Posts

Привет форумчани, подскажите как на опен карте 1.5 убрать рекомендуемость товаров в 2 стороны.

То есть если товар А рекомендует товар Б, тогда товар Б автоматически рекомендует товара А.

На просторах интернета я нашел статью "Баг или фича" из всего этого я понял что в admin/model/catalog/product.php

Есть запросы на удаление и добавление товара, эта статья писалась под 1.4 я так понимаю, потому что с 1.5 она работает не корректно.

В итоге если я рекомендую товрау А товар Б, то они прописываются в 1 сторону корректно, а если ещё добавить с Б на А, тогда рекомендуемость с А на Б слетит. Вот мои коды, подскажите что не так.

public function addProduct($data) {

  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 . "'");
   }
  }

public function editProduct($product_id, $data) {

  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 . "'");
   }
  }
Надіслати
Поділитися на інших сайтах


Конечно помощи от сообщества я не дождался, но в глаза попали строки

Решение:

В public function addProduct($data) {

найдите и закоментрируйте как у меня 2 последнии строки:

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 . "'");
}
}

В public function editProduct($product_id, $data) {

найдите и закоментируйте как у меня:


$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 . "'");
}
}

Получатся полноценные цепочки, товар А можно будет сослать на товар Б, а товар Б на товар А, и так далее.

  • +1 3
Надіслати
Поділитися на інших сайтах


делал реализацию вывода товаров из той же категории ближайших по цене в две стороны с лимитом в 4 штуки по моему - смотреть тут...

Это не модуль, а дописка в файлы продукта... если оно, могу ковырнуть файлы - а ты из них уже вытянешь то что те надо.

http://molotochek.com.ua/elektroinstrumenti/perforatory/perforator-makita-hr-2470

Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

Добрый попытался такое сделать на версии 1.5.1.3

Теперь при выборе вкладки товары в админке выдает ошибку

Fatal error: Cannot redeclare class ModelCatalogProduct in /home/cvy/dvrstore.ru/docs/admin/model/catalog/product.php on line 1556

Перезапись чистыми файлами не помогает.

Подскажите плиз как быть?

Спасибо.

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Откройте файл /home/cvy/dvrstore.ru/docs/admin/model/catalog/product.php и посмотрите строчку 1556 (можно через notepad ++)

Если сами не поймете в чем дело, скиньте её сюда.

Надіслати
Поділитися на інших сайтах


  • 2 months later...

ocstore 1.5.3 у меня не работает данная схема. Кто-нибудь знает решение как избавиться от двойной рекомендации???

в первом посту решение верное
Надіслати
Поділитися на інших сайтах

в первом посту решение верное

Странно, но у меня если рекомендуешь товару А товар Б то Б автоматически рекомендует А.

Сделал по первому и второму способу

product.php

Надіслати
Поділитися на інших сайтах


  • 2 months later...

ocStore 1.5.2.1.

Я может что-то не допоняла, но, сделав изменения в admin/model/catalog/product.php по варианту #2 - всё осталось абсолютно по-прежнему - как была перелинковка в 2 стороны, так осталась.....

Вопрос снят - после этих изменений в файле экспорта-импорта нужно было удалить ссылочные id с ненужных позиций..

Змінено користувачем Alexa
Надіслати
Поділитися на інших сайтах


  • 5 months later...

Конечно помощи от сообщества я не дождался, но в глаза попали строки

Решение:

В public function addProduct($data) {

найдите и закоментрируйте как у меня 2 последнии строки:

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 . "'");
}
}

В public function editProduct($product_id, $data) {

найдите и закоментируйте как у меня:


$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 . "'");
}
}

Получатся полноценные цепочки, товар А можно будет сослать на товар Б, а товар Б на товар А, и так далее.

вот хоть хоть убейте, но у меня нет таких строк. 1.5.4.1

как в этой версии кто-нибудь знает?)

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

В итоге происходили удаления связывания товаров, начал разбираться, и в итоге сделал:

 

Все делаем как в первом посту

 

+ еще закоментировать надо строку

//$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'");

И все заработало.

Надіслати
Поділитися на інших сайтах


  • 1 month later...
  • 1 month later...
  • 7 months later...
  • 1 month later...

Всем привет. У меня другая проблема. Связываю рекомендованные товары, но они стали отображаться как попало. Допустим связал один товар, назовем его 10 карандашей с товаром 20 карандашей. 20 карандашей связал с 30 карандашей и т.д. В итоге на той странице где 20 карандашей рекомендованные меняются почему то местами и отображается справа 10 карандашей, а слева 30.  На следующей странице отображение нормальное, т.е. большее количество справа, меньшее слева. 

 

Подскажите, как сделать что бы товар отображался нормально? Пробовал ваш способ, но он мне ничего не дал. По какой логике Опенкарт товар располагает в рекомендованных? Может надо id у товара где то поменять? А то винегрет получается, то слева товар который должен быть справа, то наоборот. Пробовал менять через админку последовательность добавления (что бы один товар был над другим и наоборот) но это тоже ничего не дало. 

Надіслати
Поділитися на інших сайтах


  • 6 months later...
  • 6 months later...

Добрый вечер!

Что-то не пойму разницу) Сделала как во втором посте. До изменения товар А ссылается на товар Б, автоматически товар Б ссылается на товар А. После изменения файла все то же самое. В чем суть изменения

Надіслати
Поділитися на інших сайтах


  • 7 months later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.