Перейти к содержанию
magneto2010

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

Рекомендуемые сообщения

Речь идет о сопутствующих товарах, которые задаются товару во вкладке Связи.
Задача выводить товары в той последовательности, в которой добавили эти товары в список сопутствующих в админке. Сейчас они выводятся по 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

Изменено пользователем magneto2010

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, nikifalex сказал:

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

 

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

 

 

 

Изменено пользователем magneto2010

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

 

 

Изменено пользователем magneto2010

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 03.09.2018 в 21:29, nikifalex сказал:

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

Та вы шо?

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, chukcha сказал:

Та вы шо?

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

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

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

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

 

 

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

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

 

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

6dBAtyi1xdwtt32RlmIybrQcypUvgl.png

 

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

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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 сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.