Сортировка в InstantShop v2.2

InstantCMS 1.X
#1 4 июня 2021 в 17:11
Здравствуйте. После добавления большого количества товаров возникла необходимость изменить порядок, в котором они отображаются на странице. На страницу выведена витрина. На данный момент они отсортированы по id, как его изменить я не нашел. Параметр "Сортировка товаров по-умолчанию:" во вкладке товары, в настройках компонента влияния не оказал. Изменение порядка отображения в админке так же не изменило порядок на странице. Буду рад любой помощи.
#2 4 июня 2021 в 17:29
Для модуля витрины вывод товаров обусловлен функцией
  1. public function getFrontItems($root_cat_id=0) {
  2.  
  3. if ($root_cat_id){
  4. $rootcat = $this->inDB->get_fields('cms_shop_cats', 'id='.$root_cat_id, 'NSLeft, NSRight');
  5. $catsql = "i.category_id = c.id AND c.NSLeft >= {$rootcat['NSLeft']} AND c.NSRight <= {$rootcat['NSRight']}";
  6. }
  7.  
  8. $this->where('i.is_front = 1');
  9. if ($root_cat_id) { $this->where($catsql); }
  10. $this->groupBy('i.id');
  11.  
  12. return $this->getItems();
  13.  
  14. }
в файле \components\shop\model.php

перед $this->groupBy('i.id');
добавьте
$this->orderBy('i.title');
и будет сортировка по названию
#3 4 июня 2021 в 18:12


Для модуля витрины вывод товаров обусловлен функцией

  1. public function getFrontItems($root_cat_id=0) {
  2.  
  3. if ($root_cat_id){
  4. $rootcat = $this->inDB->get_fields('cms_shop_cats', 'id='.$root_cat_id, 'NSLeft, NSRight');
  5. $catsql = "i.category_id = c.id AND c.NSLeft >= {$rootcat['NSLeft']} AND c.NSRight
  6.  

AtlantisWeb

Спасибо вам за ответ. А можно ли применить такой метод только к одной из витрин? И Хотелось бы установить сортировку по артикулу, замена i.title на i.vendor / i.vendor_id не повлияло на результат, думаю я просто не правильно пишу название
#4 6 июня 2021 в 15:07



Для модуля витрины вывод товаров обусловлен функцией

  1. public function getFrontItems($root_cat_id=0) {
  2.  
  3. if ($root_cat_id){
  4. $rootcat = $this->inDB->get_fields('cms_shop_cats', 'id='.$root_cat_id, 'NSLeft, NSRight');
  5. $catsql = "i.category_id = c.id AND c.NSLeft >= {$rootcat['NSLeft']} AND c.NSRight
  6.  

AtlantisWeb

Спасибо вам за ответ. А можно ли применить такой метод только к одной из витрин? И Хотелось бы установить сортировку по артикулу, замена i.title на i.vendor / i.vendor_id не повлияло на результат, думаю я просто не правильно пишу название

@Risalo

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

Зайдите в БД и посмотрите какие поля есть в таблице "cms_shop_items", по ним и можно будет делать сортировку.
Артикул имеет поле не vendor_id(производитель), а "art_no"
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.