Jump to content
Sign in to follow this  
dm82

[Решено] двойная сортировка в заказах админ

Recommended Posts

Не могу въехать, почему не работает двойная сортировка в админ панели, в каталоге, в товарах такой принцип работает, а тут нет, пожалуйста подскажите, что не так делаю.

 

Мне надо, чтобы в заказах была двойная сортировка - сначала по статусу, потом по дате изменения. Статус у меня уже стоит по умолчанию, потому нужно добавить только по дате изменения, потому делаю следующее:

 

в

\admin\model\sale\order.php 
 
		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			$sql .= " ORDER BY " . $data['sort'];
		} else {
			$sql .= " ORDER BY o.order_id";
		}

меняю на

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			$sql .= " ORDER BY " . $data['sort'] . ", o.date_modified";
		} else {
			$sql .= " ORDER BY o.order_id";
		}

после этого сортируется только по дате.. Почему так, что делаю не так??

 

Спасибо за помощь!!!

 

 

Share this post


Link to post
Share on other sites

То есть после Ваших изменений, Вы выбираете например Статус: Ожидание и Дату, а у Вас выводятся все заказы(не взирая на выбранный статус) за указанную дату? Я правильно понял?

Share this post


Link to post
Share on other sites

нет. речь не про фильтр, а про сортировку (по умолчанию и двойную).

 

заказы сортируются по статусу у меня только, а надо, чтобы было сначала по статусу, а потом по дате.

По какому принципу они выводятся вообще понять не могу - ни по дате ни по номеру заказа... хрен поймешь.  

 

Т.е. у меня большой список завершенных заказов, но они все перемешаны непонятным образом, хотелось таким образом их упорядочить сортировкой по дате.

Share this post


Link to post
Share on other sites


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

            $sql .= " ORDER BY o.date_modified, " . $data['sort'];

        } else {

            $sql .= " ORDER BY o.order_id";

}

Share this post


Link to post
Share on other sites

спасибо, но так тоже пробовал - результат тот же - сортируется только по дате, какую сортировку не выбираю - в результате только по дате :(

 

а у вас сортируется?? (может тогда это в моей версии косяк)

Edited by dm82

Share this post


Link to post
Share on other sites

По статусу так сортировать не будет, Вы бы var_dump запроса сделали который идет к БД, как сейчас написано сортирует по order_id и по date_modified, надо дописать...

Share this post


Link to post
Share on other sites

сорри, в этом не спец.. как правильно надо?

это сложно сделать? можете помочь?

Share this post


Link to post
Share on other sites

В модели перед return сделайте var_dump($sql), затем обновите страницу с заказами и Вы на экране увидите запрос, который идет к БД при открытии страницы заказов...

Share this post


Link to post
Share on other sites

спасибо, но ничего не понял..

и эти запросы при каждом открытии страницы заказов будут?

Share this post


Link to post
Share on other sites

Я Вам это сказал, чтобы Вы увидели, что по умолчанию по статусу вообще сортировка не происходит, только по id заказа и в нашем случае теперь еще и по дате изменения, чтобы сортировалось еще и по статусу необходимо поправить сам запрос

Share this post


Link to post
Share on other sites

у меня по умолчанию как раз только по статусу и происходит..

сам 

$data['sort']

выставлен по статусу в контроллере

 

\admin\controller\sale\order.php

if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'status';
		}

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

Share this post


Link to post
Share on other sites

и как поправить этот запрос? это сложно? или двумя строчками решается?

Share this post


Link to post
Share on other sites

Вы можете в моделе в строке 526 разместить var_dump($sql); и написать выведенный результат сюда...?

Share this post


Link to post
Share on other sites

не уверен, что в 526й... у меня там стоит

 

public function getOrderVouchers($order_id) {
 
вот мой файл:
 
 

order.zip

Share this post


Link to post
Share on other sites

У Вас получается после 495й поставьте var_dump($sql);

Share this post


Link to post
Share on other sites

в верху страницы заказов, над шапкой вылезло такое:

 

string(350) "SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, o.telephone, (SELECT os.name FROM order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '1') AS status, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `order` o WHERE o.order_status_id > '0' ORDER BY status ASC LIMIT 0,20"

Share this post


Link to post
Share on other sites

Убирайте наш var_dump и попробуйте так...

$sql .= " ORDER BY " . $data['sort'] . ", date_format(o.date_modified, '%Y-%m-%d')";

Share this post


Link to post
Share on other sites

все равно только по дате ;(

Share this post


Link to post
Share on other sites

РЕШЕНО!!!

 

спасибо за решение, devrvk

 

простое и красивое обуздание sql с ее бардаком вывода данных в заказах:

 
\admin\model\sale\order.php 
 

после

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			$sql .= " ORDER BY " . $data['sort'];
		} else {
			$sql .= " ORDER BY o.order_id";
		}

		if (isset($data['order']) && ($data['order'] == 'DESC')) {
			$sql .= " DESC";
		} else {
			$sql .= " ASC";
		}

добавить

		$sql .= ", date_format(o.date_modified, '%Y-%m-%d') DESC";

Share this post


Link to post
Share on other sites

v.2

 

еще лучше просто добавить

		$sql .= ", o.date_modified DESC";

тогда будет сортировать не только по дням, но и по времени (в секундах)

(спасибо devrvk)

 

А вообще, думаю, как минимум это:

		$sql .= ", o.order_id DESC";

т.е. сортировка по номеру заказа, в случае одинаковых имен, статусов и т.п.

должно быть в стандартной сборке.

Криейторам на заметку)

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 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:
      Исправлены мелкие ошибки.
    • By Otvet
      Модуль позволяет настраивать сортировку товаров в категориях/производителях/поиске/акциях, а так же добавляет новые варианты сортировки товаров.
      Так же имеется возможность управлять кол-вом товара на страницу и скрывать товары не в наличии
       
       
      Доступна версии 4.0.1 beta с поддержкой в т.ч. и Opencart 3.0 (по запросу)
       
      Функции:
      настройка вывода пунктов сортировки в магазине выбор сортировки по умолчанию добавление сортировки по Новизне и Остатку возможность выводить сначала товары в наличии выбор вариантов сортировки по наличию (статус или нулевой остаток) возможность скрыть товары не в наличии настроить список чисел вывода кол-ва товара  
       
      Установка 2.3:
       
      Установка 2.0-2.1:
      Зайдите в Дополнения - Установка Выберите файл *.ocmod.zip (распаковывать не нужно) После установка перейдите в Дополнения - Модификации и обновите кеш Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните При возникновении проблем, установите это http://www.opencart.com/index.php?route=extension/extension/info&extension_id=18892  
      Установка 1.5:
      Распакуйте архив в корень сайта Очистите папку vqcache Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните  
      Установка 3.0-3.1:
      Зайдите в Дополнения - Установка Выберите файл *.ocmod.zip (распаковывать не нужно) После установка перейдите в Дополнения - Модификации и обновите кеш Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните
    • By Otvet
      300.00 руб
      Скачать/Купить дополнение


      Sorts&Limits : Настраиваемая сортировка и скрытие "не в наличии"
      Модуль позволяет настраивать сортировку товаров в категориях/производителях/поиске/акциях, а так же добавляет новые варианты сортировки товаров.
      Так же имеется возможность управлять кол-вом товара на страницу и скрывать товары не в наличии
       
       
      Доступна версии 4.0.1 beta с поддержкой в т.ч. и Opencart 3.0 (по запросу)
       
      Функции:
      настройка вывода пунктов сортировки в магазине выбор сортировки по умолчанию добавление сортировки по Новизне и Остатку возможность выводить сначала товары в наличии выбор вариантов сортировки по наличию (статус или нулевой остаток) возможность скрыть товары не в наличии настроить список чисел вывода кол-ва товара  
       
      Установка 2.3:
       
      Установка 2.0-2.1:
      Зайдите в Дополнения - Установка Выберите файл *.ocmod.zip (распаковывать не нужно) После установка перейдите в Дополнения - Модификации и обновите кеш Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните При возникновении проблем, установите это http://www.opencart.com/index.php?route=extension/extension/info&extension_id=18892  
      Установка 1.5:
      Распакуйте архив в корень сайта Очистите папку vqcache Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните  
      Установка 3.0-3.1:
      Зайдите в Дополнения - Установка Выберите файл *.ocmod.zip (распаковывать не нужно) После установка перейдите в Дополнения - Модификации и обновите кеш Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните Добавил Otvet Добавлено 04.10.2015 Категория Фильтры Системные требования Сайт разработчика http://full-index.ru Старая цена Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет  
    • By ocdroid
      300.00 руб
      Скачать/Купить дополнение


      Admin calculator | Калькулятор для админа
      Калькулятор будет полезен для быстрых расчетов в админ-панели магазина.
      Очень легкий. Доступен из любой страницы админки, дружит с numpad (цифровой клавиатурой).
       
      Инсталляция стандартная через установщик в админке.
      Тестировался в Chrome
      Распространяется as is
       

       
      = = = TODO = = =
      операции с дробными процентами  
       
      Добавил ocdroid Добавлено 14.02.2019 Категория Инструменты, утилиты Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore 3.0 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет  
  • 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.