Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

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

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

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

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

Link to post
Share on other sites

чтобы убрать перелинковку между товарами, в 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 . "'");

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

Надо зайти в товар, нажать сохранить и посмотреть что случилось со связью. 

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

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

 

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 работает когда сам удаляешь связь в админке. А что же тогда удаляет её автоматически?

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

 

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

 

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

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

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

Сделал модуль RelatedLinks - теперь можно выбирать тип перелинковки при назначении товара (односторонняя или двусторонняя) :D

Link to post
Share on other sites
  • 2 weeks later...

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

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

 

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

Link to post
Share on other sites

  • 9 months later...

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

Link to post
Share on other sites
  • 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 . "'");

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

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites
  • 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 . "'");

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

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

Link to post
Share on other sites

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

 

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

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

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

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

 

Link to post
Share on other sites
  • 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

 

Edited by IvanKK
  • +1 2
Link to post
Share on other sites

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

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

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

product_related.ocmod.xml

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.