Изменение сортировки товаров

Тема в разделе "OpenCart", создана пользователем Sadisto, 5 окт 2016.

  1. Sadisto

    Sadisto

    Регистрация:
    2 май 2014
    Сообщения:
    14
    Симпатии:
    19
    Добрый вечер.
    Имеется сортировка товаров в категориях в виде:
    Товар 1 мм
    Товар 10 мм
    Товар 2 мм
    Товар 20 мм.

    Как сделать так, чтобы товар выводился по натуральной нумерации:
    Товар 1 мм
    Товар 2 мм
    Товар 10 мм
    Товар 20 мм??
     
  2. Sadisto

    Sadisto

    Регистрация:
    2 май 2014
    Сообщения:
    14
    Симпатии:
    19
  3. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.049
    Симпатии:
    777
    Эту сортировку выполняет MySQL, который не поддерживает "натуральный" порядок. Если длина названий отличается только на длину числа в названии, то можно использовать простой костыль, который решит проблему:
    Код:
    ORDER BY LENGTH(sort_column_name), sort_column_name
    То есть, сначала происходит сортировка по длине, а потом по значению.
     
    Sadisto нравится это.
  4. Sadisto

    Sadisto

    Регистрация:
    2 май 2014
    Сообщения:
    14
    Симпатии:
    19
    Ага, я уже погугли на форуме SQL. Намного ловчее вручную поставить порядок сортировки при добавлении товара, чем жестко изменять запрос в базу, который повесит сайт. Т.к. наименования отличаются не на одну цифру.
     
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.049
    Симпатии:
    777
    При наличии индексов - не повесит.

    Если вопрос только в количестве цифр, то это не имеет значения, оно будет работать в любом случае. Если же названия в принципе отличаются, например:
    ТоварА 1 мм
    ТоварА 20 мм
    ТоварБ 10 мм

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