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

[Решено] Сортировка товара по артикулу в категории.

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

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

 

catalog/controller/product/category.php

$this->data['sorts'][] = array(
                 'text' => $this->language->get('text_sku_asc'),
                 'value' => 'p.sku-ASC',
                 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sku&order=ASC' . $url)
             );
 
             $this->data['sorts'][] = array(
                 'text' => $this->language->get('text_sku_desc'),
                 'value' => 'p.sku-DESC',
                 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sku&order=DESC' . $url)
             );

catalog/language/russian/product/category.php

 $_['text_sku_asc'] = 'Артикул (А- Я)';
 $_['text_sku_desc'] = 'Артикул (Я - А)';

catalog/model/catalog/product.php

 

такой вот запрос

$sql = "SELECT p.product_id, p.sku, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

вместо этого

$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
                'p.price',
                'rating',
                'p.sort_order',
                'p.date_added',
                'p.sku'

Собственно после этих манипуцляций ничего не работает, выдает синтаксическую ошибку в vqmod  ")"  версия octore 1.5.4.1    подскажите пожалуйсто в чем может быть проблема??  ps кеш чистил как в вкмод так и опенкарта.

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


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

тема закрыта, вопрос частично решен

и как решили?

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


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

Есть у кого-нибудь решение проблемы:
В базе поле SKU имеет тип varchar, поэтому сортировка по артикулу работает неправильно:
1,10,11,2,20,21
Как сортировать артикул как число?
1,2,10,11,20,21
Какой запрос в /catalog/model/catalog/product.php менять?

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


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

Разобрался, кому интересно:

На 1.5.3.1

 

Файл /catalog/model/catalog/product.php

 

В это условие:

if (isset($data['sort']) && in_array($data['sort'], $sort_data))

Добавить:

elseif ($data['sort'] == 'p.sku') {
         $sql .= " ORDER BY CAST(" . $data['sort'] . " as unsigned)";
				} 
Изменено пользователем uraaa

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


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

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

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

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

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

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

Войти

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

Войти

  • Похожий контент

    • От ibond
      350.00 руб
      Скачать/Купить дополнение


      Фильтр товаров в админке по производителю, категории, артикулу, изображению и ID
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, категориям, артикулу (Sku), изображениям и ID товара. Добавляет колонки ID товара, Артикул, Производители и  Категории в списке товаров и позволяет включать/отключать для просмотра колонки по выбору. Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий.
       
      Работает (тестировался): OpenCart 3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0
       
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
       
      Как обновить, тут:
       
      Демонстрация (admin):
      Логин: demo / Пароль: demo
       
      Что нового в версии 3.1.0:
      Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий. Добавлена колонка производители в список товаров. Добавлена сортировка по производителю.  
      Что нового в версии 3.0.1:
      Исправлены мелкие ошибки. Добавил ibond Добавлено 16.10.2018 Категория Фильтры Системные требования Сайт разработчика Старая цена 400 Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore 3.0 OpenCart.Pro, ocShop Не проверялось  
    • От ibond
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, категориям, артикулу (Sku), изображениям и ID товара. Добавляет колонки ID товара, Артикул, Производители и  Категории в списке товаров и позволяет включать/отключать для просмотра колонки по выбору. Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий.
       
      Работает (тестировался): OpenCart 3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0
       
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
       
      Как обновить, тут:
       
      Демонстрация (admin):
      Логин: demo / Пароль: demo
       
      Что нового в версии 3.1.0:
      Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий. Добавлена колонка производители в список товаров. Добавлена сортировка по производителю.  
      Что нового в версии 3.0.1:
      Исправлены мелкие ошибки.
    • От LionHunter
      Здравствуйте
       
      Возможно кто-то такое делал или знает как: необходимо, чтобы товары в категории сортировались (по умолчанию) в зависимости от количества продаж. То есть, товары, которых продано  больше всего за период существования магазина были вверху и далее по убыванию.
      Это вообще реально сделать? Если вдруг есть тема, где что-то подобное уже обсуждалось - буду благодарен за подсказку.  
    • От ArtMike
      Встал вопрос о модификации стандартной сортировки и возможности добавления в неё сортировки по подкатегориям. Зачем?  Есть же куча модулей - фильтров!
      Я думаю ни для кого не секрет что больше половина трафика практически на любой ресурс идет с мобильных устройств и собственно там их (эти все крутые фильтры просто некуда пихать). А вот стандартная сортировка смотрится компактно и вполне элегантно, работает привычно и функционально для юзера. 
      Вот только бы добавить туда возможность сортировки по подкатегориям. 
      В очередной раз удивлен, что никому это не понадобилось пока и решений я не нашел, ни в РУ сегменте, ни в ЕN сегменте,
      Может кто-то реализовывал подобное? Или готов за разумное вознаграждение помочь? 
       

    • От ibond
      Скачать/Купить дополнение


      Фильтр товаров в админке по производителям, артикулу и категориям
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, артикулу (Sku) и категориям (только для русской сборки и оригинальной версии). Также добавляет колонку Категории в списке товара (только для русской сборки и оригинальной версии).
      Работает (тестировался):
      OcStore 2.1.0.1, 2.1.0.2.1, 2.3.0.2, 2.3.0.2.1
      OpenCart 2.1.0.2, 2.3.0.2, 2.3.0.2 (rs.5)
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
       
      Версия для OpenCart 3.x:
       
      Если Вы хотите как-то отблагодарить меня, то можете это сделать, пожертвовав любую сумму через систему Webmoney на мои кошельки: R290391741542, Z270297495254. Разумеется, делать пожертвование не обязательно. Это Ваш добровольный шаг. Позыв к нему должен исходить из глубин вашей души, от чистого сердца.
      Добавил ibond Добавлено 20.11.2016 Категория Фильтры Системные требования Сайт разработчика https://opencartforum.com/profile/28580-ibond/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось  
  • Последние посетители   0 пользователей онлайн

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

×

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

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