Jump to content
Sign in to follow this  
turtiks

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

Recommended Posts

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

 

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 кеш чистил как в вкмод так и опенкарта.

Share this post


Link to post
Share on other sites

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

и как решили?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

На 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)";
				} 
Edited by uraaa

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  

  • Similar Content

    • By UserMan123
      Здравствуйте, хочу добавить отображение артикула товара в письме с заказом.
      В catalog/controller/account/order.php после
      $data['column_model'] = $this->language->get('column_model'); добавил
      $data['column_sku'] = $this->language->get('column_sku'); еще сюда sku добавил
      $data['products'][] = array( 'name' => $product['name'], 'order_product_id' => $product['order_product_id'], 'model' => $product['model'], 'sku' => $product['sku'], 'option' => $option_data, 'image' => $image, 'quantity' => $product['quantity'], 'price' => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']), 'total' => $this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']), 'reorder' => $reorder, 'return' => $this->url->link('account/return/add', 'order_id=' . $order_info['order_id'] . '&product_id=' . $product['product_id'], 'SSL') ); } Потом в /catalog/view/theme/default/template/mail/order.tpl добавляю 
      $product['sku'] Но в шаблоне письма ничего не отображается, у заказанных товаров артикул есть. Подскажите, пожалуйста.
    • By PaulKravchenko
      Скачать/Купить дополнение


      Артикул на страницах / в модулях
      Модуль предоставляет возможность включить отображение артикула товара (SKU) практически на всех стандартных страницах витрины и админпанели.
      Отображение на каждой из поддерживаемых страниц может быть включено или отключено отдельно, в настройках модуля.
      Никакие фалы не заменяются и не изменяются напрямую, только через систему модификаций.
       
      Доступные варианты настройки модуля
       
      показывать артикул на странице товара показывать артикул на странице категории показывать артикул на странице производителя показывать артикул в сравнении товаров показывать артикул в закладках показывать артикул в корзине показывать артикул на странице подтверждения заказа показывать артикул на странице истории заказов в личном кабинете показывать артикул в админпанели на странице списка товаров + фильтр по артикулу + сортировка по артикулу показывать артикул в админпанели в заказах - при просмотре, редактировании, в печатных формах показывать артикул в модуле Рекомендуемые показывать артикул в модуле Хиты продаж показывать артикул в модуле Последние / Новинки показывать артикул в модуле Товары со скидкой / Акции показывать артикул в модуле Simple (блок корзины) показывать артикул в e-mail уведомлениях о новом заказе покупателю и админу   
      Поддерживаемые темы/шаблоны
       
      Стандартная тема (Default) NewStore - включая все базовые модули шаблона (такие как Быстрый заказ, Быстрый просмотр товара и т.п.) всего 10 модулей  
      Поддерживаемые версии и сборки OpenCart
      Работа модуля проверялась только на ocStore 2.3.0.2.3
       
      Поддерживаемые языки
       
      Русский Украинский Английский  

      Установка
       
      Удаление (включая все файлы модуля)
       
      Ответы на некоторые предполагаемые вопросы
       
       
      Конструктивная критика с удовольствием принимается в личные сообщения или тему поддержки.
      Разумные предложения рассматриваются в том же порядке.
       
      Это первый опыт создания расширения с количеством параметров больше одного, просьба строго не судить :o)
      Добавил PaulKravchenko Добавлено 04.04.2019 Категория Модули Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет  
    • By PaulKravchenko
      Модуль предоставляет возможность включить отображение артикула товара (SKU) практически на всех стандартных страницах витрины и админпанели.
      Отображение на каждой из поддерживаемых страниц может быть включено или отключено отдельно, в настройках модуля.
      Никакие фалы не заменяются и не изменяются напрямую, только через систему модификаций.
       
      Доступные варианты настройки модуля
       
      показывать артикул на странице товара показывать артикул на странице категории показывать артикул на странице производителя показывать артикул в сравнении товаров показывать артикул в закладках показывать артикул в корзине показывать артикул на странице подтверждения заказа показывать артикул на странице истории заказов в личном кабинете показывать артикул в админпанели на странице списка товаров + фильтр по артикулу + сортировка по артикулу показывать артикул в админпанели в заказах - при просмотре, редактировании, в печатных формах показывать артикул в модуле Рекомендуемые показывать артикул в модуле Хиты продаж показывать артикул в модуле Последние / Новинки показывать артикул в модуле Товары со скидкой / Акции показывать артикул в модуле Simple (блок корзины) показывать артикул в e-mail уведомлениях о новом заказе покупателю и админу   
      Поддерживаемые темы/шаблоны
       
      Стандартная тема (Default) NewStore - включая все базовые модули шаблона (такие как Быстрый заказ, Быстрый просмотр товара и т.п.) всего 10 модулей  
      Поддерживаемые версии и сборки OpenCart
      Работа модуля проверялась только на ocStore 2.3.0.2.3
       
      Поддерживаемые языки
       
      Русский Украинский Английский  

      Установка
       
      Удаление (включая все файлы модуля)
       
      Ответы на некоторые предполагаемые вопросы
       
       
      Конструктивная критика с удовольствием принимается в личные сообщения или тему поддержки.
      Разумные предложения рассматриваются в том же порядке.
       
      Это первый опыт создания расширения с количеством параметров больше одного, просьба строго не судить :o)
    • By ibond
      450.00 руб
      Скачать/Купить дополнение


      Редактор товаров в админке + Фильтр по производителю, категории, артикулу, изображению и ID
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, категориям, артикулу (Sku), изображениям и ID товара. Добавляет колонки ID товара, Артикул, Производители и  Категории в списке товаров и позволяет включать/отключать для просмотра колонки по выбору. Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий.
       
      NEW! В версии 3.2 добавлена возможность редактирования изображений, названия, модели, артикула, производителя, категорий (совместим с SEO_PRO), цены, акционной цены, количества и статуса товара не заходя в товар. Добавлена возможность группового Включения/Отключения отфильтрованных товаров. Добавлена возможность скрытия левого меню и фильтра.
       
      Демонстрация (admin):
      Логин: demo / Пароль: demo
      https://demo3ru.open.cc.ua/admin/index.php?route=catalog/product
       
      Не заменяет файлов, все изменения вносятся через OCMOD или jQuery.
       
      Работает (тестировался): OpenCart 3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0, 3.0.3.x
       
      ВНИМАНИЕ!
      Версия 3.2 требует Ioncube Loader не ниже версии 10 и PHP не ниже версии 5.6 (поддерживает версии PHP 5.6, 7.0, 7.1, 7.2)! Лицензия активируется автоматически. Тех, кто не указал домен при покупке, прошу указать его в ЛС или письмом на адрес i.bond@mail.ru указав при этом номер счета и ник на данном форуме.  
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
       
       
      Что нового в версии 3.2.1.2:
      Исправлены мелкие ошибки.  
      Что нового в версии 3.2.0:
      Добавлена возможность редактирования изображений, названия, модели, артикула, производителя, категорий (совместим с SEO_PRO), цены, акционной цены, количества и статуса товара не заходя в товар. Добавлена возможность группового Включения/Отключения отфильтрованных товаров. Добавлена возможность скрытия левого меню и фильтра.  
      Что нового в версии 3.1.0:
      Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий. Добавлена колонка производители в список товаров. Добавлена сортировка по производителю.  
      Что нового в версии 3.0.1:
      Исправлены мелкие ошибки. Добавил ibond Добавлено 16.10.2018 Категория Фильтры Системные требования Сайт разработчика https://open.cc.ua Старая цена 350 Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 3.0 ocStore 3.0 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Да  
    • By ibond
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, категориям, артикулу (Sku), изображениям и ID товара. Добавляет колонки ID товара, Артикул, Производители и  Категории в списке товаров и позволяет включать/отключать для просмотра колонки по выбору. Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий.
       
      NEW! В версии 3.2 добавлена возможность редактирования изображений, названия, модели, артикула, производителя, категорий (совместим с SEO_PRO), цены, акционной цены, количества и статуса товара не заходя в товар. Добавлена возможность группового Включения/Отключения отфильтрованных товаров. Добавлена возможность скрытия левого меню и фильтра.
       
      Демонстрация (admin):
      Логин: demo / Пароль: demo
      https://demo3ru.open.cc.ua/admin/index.php?route=catalog/product
       
      Не заменяет файлов, все изменения вносятся через OCMOD или jQuery.
       
      Работает (тестировался): OpenCart 3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0, 3.0.3.x
       
      ВНИМАНИЕ!
      Версия 3.2 требует Ioncube Loader не ниже версии 10 и PHP не ниже версии 5.6 (поддерживает версии PHP 5.6, 7.0, 7.1, 7.2)! Лицензия активируется автоматически. Тех, кто не указал домен при покупке, прошу указать его в ЛС или письмом на адрес i.bond@mail.ru указав при этом номер счета и ник на данном форуме.  
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
       
       
      Что нового в версии 3.2.1.2:
      Исправлены мелкие ошибки.  
      Что нового в версии 3.2.0:
      Добавлена возможность редактирования изображений, названия, модели, артикула, производителя, категорий (совместим с SEO_PRO), цены, акционной цены, количества и статуса товара не заходя в товар. Добавлена возможность группового Включения/Отключения отфильтрованных товаров. Добавлена возможность скрытия левого меню и фильтра.  
      Что нового в версии 3.1.0:
      Добавлена возможность выбора для фильтрации нескольких производителей и/или категорий. Добавлена колонка производители в список товаров. Добавлена сортировка по производителю.  
      Что нового в версии 3.0.1:
      Исправлены мелкие ошибки.
  • 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.