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

Сопутствующие товары


efremovxp

Recommended Posts

Здравствуйте.

Есть товары - Бензопилы. К ним имеются аксессуары - масло, свеча зажигания и т.д.

Так вот, когда я привязываю сопуствующим товаром масло к бензопиле, мне не нужно, чтобы на странице масла появилась бензопила, так не правильно, человек не покупает к маслу бензопилу. Нужно только масло к бензопиле.

Что и где подправить, чтобы у категории товаров Аксессуары не было вообще вкладки Сопутствующих товаров.

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

чтобы убрать перелинковку между товарами, в admin\model\catalog\product.php

найти и закомментировать код (встречается два раза)

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

тогда при привязке масла к бензопиле не будет привязки бензопилы к маслу ;)

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

Вот сделать бы такую привязку опциональной, чтобы для каждого товара можно было сразу указывать...

Т.е. чехлы для телефонов между собой залинковать с обратной связью, а к телефону чехлы - без нее.

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

Вот сделать бы такую привязку опциональной, чтобы для каждого товара можно было сразу указывать...

Т.е. чехлы для телефонов между собой залинковать с обратной связью, а к телефону чехлы - без нее.

Теперь можно.

После исправлений кода, если были уже проставлены связи, надо через админку в товары заходить и нажимать сразу сохранить. С этих товаров связь будет оставлена, а с противоположного из базы удалится. А потом связи можно добавлять хоть с обраткой хоть без.

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


Теперь можно.

После исправлений кода, если были уже проставлены связи, надо через админку в товары заходить и нажимать сразу сохранить. С этих товаров связь будет оставлена, а с противоположного из базы удалится. А потом связи можно добавлять хоть с обраткой хоть без.

только про эту обратную сторону медали не забывайте, если двусторонняя перелинковка нужна

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

только про эту обратную сторону медали не забывайте, если двусторонняя перелинковка нужна

Я теперь забуду как раньше было. :)  А то и для СЕО было плохо, когда взаимные ссылки у товаров.

Кстати, от меня Вам тоже, СПАСИБО за решение.

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


Теперь можно.

После исправлений кода, если были уже проставлены связи, надо через админку в товары заходить и нажимать сразу сохранить. С этих товаров связь будет оставлена, а с противоположного из базы удалится. А потом связи можно добавлять хоть с обраткой хоть без.

Как-то сумбурно написано, я ничего не понял, если честно :(

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

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

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

а ничего хорошего ))

либо пропадет вовсе, либо станет опять двусторонней.

этот вопрос уже обсуждался.

единственное правильное решение - добавить новый функционал именно с односторонней привязкой.

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

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

Так прочтите что именно я хочу. Мне нужны оба варианта сразу.

Если я линкую чехол для айфона с чехлом для айфона - 2 сторонняя, если чехол к самому айфону - 1 сторонняя.

Понимаю, что можно использовать модуль "сопуствующие товары" + "похожие товары", а там еще 100500 модулей, но это уже нагромождение, лучше когда все в одном.

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

Блииин, проверил. Не делается двусторонняя теперь, ставлю обратную, а у второго она пропадает. А я то был уверен, что можно. Вот на ровном месте же проблема. :-(

 В том файле наверно ещё надо строки коментировать.

 

2 одинаковых куска кода: Строки с 96 по 103 и с 242 по 249

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

Я так понимаю DELETE FROM работает когда сам удаляешь связь в админке. А что же тогда удаляет её автоматически?

Как-то ведь можно сделать. Логику бы только понять.

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


единственное правильное решение - добавить новый функционал именно с односторонней привязкой.

Так это в базе отдельная таблица появится. И у товара 2 блока будет: Связанные и Рекомендуемые. Можно ведь сделать 2 в одном: Сопутствующие товары.

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


возможно в какой-то степени подойдет модуль Сопутствующие товары

 

единственное правильное решение - добавить новый функционал именно с односторонней привязкой.

 

вот эти модули на основе "родных" рекомендуемых, но с односторонней привязкой, может тоже кому-то пригодятся :)

 Модуль "Рекомендуемые товары"

 Клон модуля "Рекомендуемые товары"

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

Вопрос заинтересовал, сейчас в процессе работы над модулем перелинковки - с возможностью выбора односторонней или двусторонней связи

О результате сообщу ;)

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

  • 2 weeks later...

DELETE FROM работает когда сам удаляешь связь в админке. А что же тогда удаляет её автоматически?

Как-то ведь можно сделать. Логику бы только понять.

 

Как-то получилось решить вопрос чтоб не удаляло автоматически?

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


  • 9 months later...

а как бы сделать чтобы все товары перелинковывались? то есть в одном товаре ввел например 5 сопутствующих, и все всех пяти эти же сопуствующие тоже отображались?

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

  • 11 months later...
В 03.04.2015 в 20:44, AlexDW сказал:

чтобы убрать перелинковку между товарами, в admin\model\catalog\product.php

найти и закомментировать код (встречается два раза)


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

тогда при привязке масла к бензопиле не будет привязки бензопилы к маслу ;)

 Да но при таком варианте, если изменить товар на который ссылаются связь пропадает, или это только у меня так?

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


потому что при редактировании подчиненного товара никак не учитываются его связи

поднималось здесь, ссылка на рабочее решение там же

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

  • 8 months later...
В 03.04.2015 в 00:44, AlexDW сказал:

чтобы убрать перелинковку между товарами, в admin\model\catalog\product.php

найти и закомментировать код (встречается два раза)


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

тогда при привязке масла к бензопиле не будет привязки бензопилы к маслу ;)

А закомментировать надо этот код оба раза? Я их оба закомментил-ничего не изменилось.

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


если движок 2х - после правок файлов нужно кеш модификаторов обновлять

 

и вариант с комментированием - не вариант,

В 24.01.2017 в 16:11, AlexDW сказал:

потому что при редактировании подчиненного товара никак не учитываются его связи

поднималось здесь, ссылка на рабочее решение там же

 

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

  • 1 year later...
В 09.04.2015 в 08:16, ochag сказал:

 

 В том файле наверно ещё надо строки коментировать.

 

 

Да, для корректной работы еще нужно закомментировать:

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

Сделал модуль под это дело, теперь сопутствующие товары работают корректно, без двусторонней привязки и без автоматического удаления когда связаны товары.

Устанавливая данное дополнение, остается только односторонняя привязка.  Делал для 2.х

product_related.ocmod.xml

 

Змінено користувачем IvanKK
  • +1 2
Надіслати
Поділитися на інших сайтах


  • 4 weeks later...
В 27.10.2018 в 19:24, IvanKK сказав:

Сделал модуль под это дело, теперь сопутствующие товары работают корректно, без двусторонней привязки и без автоматического удаления когда связаны товары.

Устанавливая данное дополнение, остается только односторонняя привязка.  Делал для 2.х

product_related.ocmod.xml

Огромное спасибо! Все работает и связи сами не удаляются!

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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