Сортировка товаров по ID, как?

Тема в разделе "Общие вопросы", создана пользователем 6yka, 16 фев 2016.

  1. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    Добрый день!

    Как мне сделать, чтобы товары в каталоге по умолчанию сортировались по ID товара, а не по указанной сортировке?
    Спасибо!

    OC 2.1.0.1
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    3.885
    Симпатии:
    938
    6yka нравится это.
  3. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    Спасибо за ссылку. По поводу админки я видел, тут, вроде понятно. А вот какой код правильно поменять в каталоге для посетителя я не понял.
    файлы, вроде:
    /catalog/controller/product/category.php
    /catalog/model/catalog/product.php

    не очень силен в кодинге
     
  4. Vlad

    Vlad Эксперт

    Сообщения:
    3.885
    Симпатии:
    938
    в файле \catalog\model\catalog\product.php в функции public function getProducts

    находим
    Код:
    $sql .= " ORDER BY p.sort_order";
    и меняем
    PHP:
    $sql .= " ORDER BY p.product_id";
    чуть выше в массив $sort_data = array( добавим 'p.product_id',


    и в catalog\controller\product\category.php

    найдем
    Код:
    $sort = 'p.sort_order';
    заменим на
    PHP:
    $sort 'p.product_id';
     
    sergdroid, kukumberg и 6yka нравится это.
  5. 6yka

    6yka Пользователь

    Сообщения:
    37
    Симпатии:
    1
    Спасибо огромное! Действовал в верном пути, но не получалось у меня, т.к. я забыл вставить

     
  6. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
    А что бы еще порядок сортировки по убыванию?
     
  7. Vlad

    Vlad Эксперт

    Сообщения:
    3.885
    Симпатии:
    938
    Чуть ниже изменить ASC на DESC
     
    raskachay нравится это.
  8. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
  9. Vlad

    Vlad Эксперт

    Сообщения:
    3.885
    Симпатии:
    938
    не проверял. Но в моделе вот этот кусок в функции отвечает за сортировку

    PHP:
            if (isset($data['order']) && ($data['order'] == 'DESC')) {
                
    $sql .= " DESC, LCASE(pd.name) DESC";
            } else {
                
    $sql .= " ASC, LCASE(pd.name) ASC";
            }
    попробуйте убрать лишнее например LCASE(pd.name) ...
     
  10. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
    Не дает эффекта.
     
  11. Vlad

    Vlad Эксперт

    Сообщения:
    3.885
    Симпатии:
    938
    проверяйте.. должно было все работать.. Посмотрю после выходных еще... если сами не найдете..
     
  12. Myasiaf

    Myasiaf Новичок

    Сообщения:
    4
    Симпатии:
    1
    Какой смысл сортировать по коду товара? Как сортировка по дате добавления товара?
     
  13. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
    Если у вас не будут восстанавливаться продукты из архива на первую позицию, то списки по коду и id будут совпадать. Например для меня важно, что бы новый продукт был вверху списка, а по id или по дате он сортируется для меня не важно.
     
  14. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
    Жду вас с выходных.:)
     
  15. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
    В админке, кстати, сработало.
     
  16. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
    Понял в чем дело. Товары выводятся на главную страницу посредством модуля "Рекомендуемые > Home Page". Как в таком случае произвести сортировку? Или подскажите более изящный способ отобразить продукты на главной странице (без меню, переходов и пр. только список товаров)
     
  17. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
    Корявый способ:
    В файле \catalog\controller\module\featured.php - файл выводимого модуля на заглавной странице
    В условии (строка 24):
    PHP:
    if (!empty($setting['product'])) {
    Добавил:
    PHP:
    $products array_reverse($products);
    Стало так:
    PHP:
    if (!empty($setting['product'])) {
       
    $products array_slice($setting['product'], 0, (int)$setting['limit']);

       
    $products array_reverse($products); // добавленная строка

       
    foreach ($products as $product_id) {
          
    $product_info $this->model_catalog_product->getProduct($product_id);
    Жду еще предложений.
     
    Последнее редактирование: 24 фев 2016
  18. Ален

    Ален Эксперт

    Сообщения:
    2.055
    Симпатии:
    634
    а при чем рекомендуемые и сортировка в каталоге товаров? У рекомендуемых свои файлы и своя модель
     
  19. ptica

    ptica Новичок

    Сообщения:
    12
    Симпатии:
    0
    Это я уже понял, что свои файлы и своя модель. Изначально я посчитал, что на главной у меня выводится каталог товаров. Если вопрос выходит за рамки темы, давайте перенесем или создадим новую ветку.
     
  20. Ален

    Ален Эксперт

    Сообщения:
    2.055
    Симпатии:
    634
    перенесем... но сделали вы в принципе правильно!
     
    ptica нравится это.