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

Сортировка рекомендуемых/сопутствующих товаров.


magneto2010
 Share

Recommended Posts

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

 

Всё что придумал, это добавить еще один столбец в таблицу product_related с названием sort.

В это поле добавлять число из input, равное кол-ву дивов родителя id="product_related"

 

1) В шаблон товара в админке в javascript было внесена переменная n.

 

$('#product-related' + item['value']).remove();
    var n = $("#product-related > div").length;
        $('#product-related').append('<div id="product-related' + item['value'] + '"><i class="fa fa-minus-circle"></i> ' + item['label'] + '<input type="hidden" name="product_related[]" value="' + item['value'] + '" /><input id="count" type="hidden" name="product_related_sort[]" value="' + n + '" /></div>');

 

Не уверен, что это норм вариант, но при добавлении товара добавляется input так как нужно, по моему воображению (а оно может быть не совсем верным).

 

 

Screenshot_2.thumb.jpg.91183618f605ff32591baf37c3ca79f7.jpg

 

2) в контроллере товара 

 

if ($related_info) {
                $data['product_relateds'][] = array(
                    'product_id' => $related_info['product_id'],
                    'name'       => $related_info['name'],
                    'sort'       => $related_info['sort']
                );
            }

 

3) Осталось подключить базу, но не совсем вытягиваю с sql - мог бы кто-то подсобить? Пробовал по аналогии добавить этот столбец (sort) но не работает, уверен, что где-то накосячил.

 

Файл модели с моими "каруселями" product.php

Edited by magneto2010
Link to comment
Share on other sites


8 минут назад, nikifalex сказал:

был же модуль готовый где мышкой перетаскивали рекомендуемые.

 

Вы про это? Там  для модуля, а у модуля по другому данные записываются, нежели у товара. Или должно сработать?

 

 

 

Edited by magneto2010
Link to comment
Share on other sites


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

Link to comment
Share on other sites

не понял. Идея -  сохранить данные в столбец sort и уже по этим данным сортировать. Или вы говорите, что эти данные не смогут записаться?

Link to comment
Share on other sites


я говорю что столбец не нужен потому что

15 минут назад, magneto2010 сказал:

Сейчас они выводятся по id от меньшего к большему

 

и записываться будут точно так же.

Link to comment
Share on other sites

что значит записываться будут точно также? сейчас в таблице product_related только связи, там нет других данных как вы знаете. Данных по которым возможно сортировать товар. Могу ли я внести доп данные в эту таблицу и по этим доп данным вести сортировку в пользовательской части?

 

 

 

 

Edited by magneto2010
Link to comment
Share on other sites


Можете и свой столбец добавить

Только нужно переделывать то, что что связано с рекомендуемыми в админке. Посмотрите как в модели формируется список, метод getProductRelated

Link to comment
Share on other sites


В 03.09.2018 в 21:29, nikifalex сказал:

а значит сортироваться будут точно так же кто выше у того ID меньше и sort не нужен

Та вы шо?

В реляционных базах, если не указан ORDER BY то порядок сортировки не предсказуем!

 

В 03.09.2018 в 21:33, nikifalex сказал:

и записываться будут точно так же.

Это с каких таких делов?

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

Link to comment
Share on other sites

4 минуты назад, chukcha сказал:

Та вы шо?

В реляционных базах, если не указан ORDER BY то порядок сортировки не предсказуем!

не я это писал. Это было в ТЗ

В 04.09.2018 в 00:17, magneto2010 сказал:

Сейчас они выводятся по id от меньшего к большему

 

 

6 минут назад, chukcha сказал:

Это с каких таких делов?

 

порядок указан кто первый в списке у того меньше ID

6dBAtyi1xdwtt32RlmIybrQcypUvgl.png

 

7 минут назад, chukcha сказал:

related имеет  двусторннюю связь, тогда нужно эту связь отключать

 

конечно. Но только этот момент в ТЗ упущен.

 

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

Link to comment
Share on other sites

4 минуты назад, nikifalex сказал:

порядок указан кто первый в списке у того меньше ID

CREATE TABLE `oc_product_related` (  `product_id` int(11) NOT NULL,  `related_id` int(11) NOT NULL,  PRIMARY KEY (`product_id`,`related_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8

Где здесь id

здесь индекс, а как посчитает оптимизатор так и применит сортировку.

 

8 минут назад, nikifalex сказал:

не надо прямо так серьезно все воспринимать,

Ни в коем случае, я только цитировал вас, в том как я прочитал и понял

Link to comment
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
 Share

×
×
  • 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.