Jump to content
Sign in to follow this  
magneto2010

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
8 минут назад, nikifalex сказал:

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

 

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

 

 

 

Edited by magneto2010

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

 

 

 

Edited by magneto2010

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
В 03.09.2018 в 21:29, nikifalex сказал:

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

Та вы шо?

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

 

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

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

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

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

Share this post


Link to post
Share on other sites
4 минуты назад, chukcha сказал:

Та вы шо?

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

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

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

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

 

 

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

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

 

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

6dBAtyi1xdwtt32RlmIybrQcypUvgl.png

 

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

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

 

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

 

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

Share this post


Link to post
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 сказал:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.