Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[РЕШЕНО] Сортировка по дате поступления в админке


Ketty83

Recommended Posts

Как сделать в админке сортировку товаров по дате добавления???

Ос 1.5.5.1.2

 

качала этот модуль http://www.opencart.com/index.php?route=extension/extension/info&extension_id=10787&filter_search=date&filter_license=0&filter_download_id=31

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

может можно как-то еще сделать сортировку? 

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Никто не видит... проблемы

 

Куда смотреть?

предлагаете ставить ненужный модуль ( я про себя) смотреть что там не работает, а потом Вам отвечать?

А может Вам обратиться к разработчику?

 

Ос 1.5.5.1.2

 

VQMod_Product_Filter_by_date_OC_1.5.5.1 v1.5.5.1

Надіслати
Поділитися на інших сайтах

в том то и дело не хочется ставить модуль...

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

Надіслати
Поділитися на інших сайтах


Главное правильно поставить вопрос

 

Имеем

			$sort_data = array(
				'pd.name',
				'p.model',
				'p.price',
				'p.quantity',
				'p.status',
				'p.sort_order'
			);	
			
			if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
				$sql .= " ORDER BY " . $data['sort'];	
			} else {
				$sql .= " ORDER BY pd.name";	
			}
			

добавляем и изменяем

			$sort_data = array(
				'pd.name',
				'p.model',
				'p.price',
				'p.quantity',
				'p.status',
				'p.sort_order',
				'p.date_added',
				'p.date_modified', //Чтоб было
			);	
			
			if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
				$sql .= " ORDER BY " . $data['sort'];	
			} else {
				$sql .= " ORDER BY 'p.date_added'";	
//или
//				$sql .= " ORDER BY 'p.date_modified'";	
//по желанию
			}
Надіслати
Поділитися на інших сайтах

к сожалению, фокус не сработал... все без изменений :(

 

только я вот на такое заменила.. 

$sort_data = array(
				'pd.name',
				'p.model',
				'p.price',
				'p.quantity',
				'p.status',
				'p.sort_order', 
				'p.date_added'
			);	
			
			if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
				$sql .= " ORDER BY " . $data['sort'];	
			} else {
				$sql .= " ORDER BY p.date_added";	
			}

без кавычек.. как в оригинале было...

Надіслати
Поділитися на інших сайтах


Эх... и только "мать.... мать... мать...

 

Рядом....

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY pd.name ASC");
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY p.date_added ASC");

 

Надіслати
Поділитися на інших сайтах

ой... ввел в заблуждение

 

Сделанные изменения не помешают

 

если в контроллере

		if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'pd.name';
		}
        if (isset($this->request->get['sort'])) {
            $sort = $this->request->get['sort'];
        } else {
            $sort = 'pd.date_added';
        }
Надіслати
Поділитися на інших сайтах

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

наверное p.date_added ???

но это все равно не помогло.. внесла все изменения :( но все по старому

Надіслати
Поділитися на інших сайтах


наверное p.date_added ???

Да, конечно.

 

Не может быть, чтоб не работало.

Добро пожаловать в личку...

Надіслати
Поділитися на інших сайтах

СОРРИ! ошибка моя.. в контроллере

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

надо было два раза изменить, а я только один...

и еще попутно заменила в двух случаях...

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

на

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

Спасибо chukcha за помощь!! Теперь все работает!!! :eek:

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Для Mihrutka (моя версия оссторе 1.5.5.1.2)
admin/model/catalog/product.php 

			$sort_data = array(
				'pd.name',
				'p.model',
				'p.price',
				'p.quantity',
				'p.status',
				'p.sort_order'
			);	
			
			if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
				$sql .= " ORDER BY " . $data['sort'];	
			} else {
				$sql .= " ORDER BY pd.name";	
			}

меняем на

$sort_data = array(
				'pd.name',
				'p.model',
				'p.price',
				'p.quantity',
				'p.status',
				'p.sort_order', 
				'p.date_added'
			);	
			
			if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
				$sql .= " ORDER BY " . $data['sort'];	
			} else {
				$sql .= " ORDER BY p.date_added";	
			}

далее в этом же файле

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY pd.name ASC");

меняем на

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY p.date_added ASC");

admin/controller/catalog/product.php (встречается два раза.. менять оба раза)

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

меняем на

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

далее в этом же файле (в двух случаях)

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

на

if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'DESC';
		}
Надіслати
Поділитися на інших сайтах


  • 11 months later...
  • 10 months later...

Ребята, а не подскажите это же решение для Opencart 2.x? 

 

Сделал все как написано, но изменений не замечаю. Что было не так при выполнении шагов: в файле admin/controller/catalog/product.php  указанный код должен был встречаться два раза (как писали выше), но в действительности он у меня встречался только 1 раз.

Надіслати
Поділитися на інших сайтах


  • 1 month later...

 

Для Mihrutka (моя версия оссторе 1.5.5.1.2)

admin/model/catalog/product.php 

			$sort_data = array(
				'pd.name',
				'p.model',
				'p.price',
				'p.quantity',
				'p.status',
				'p.sort_order'
			);	
			
			if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
				$sql .= " ORDER BY " . $data['sort'];	
			} else {
				$sql .= " ORDER BY pd.name";	
			}

меняем на

$sort_data = array(
				'pd.name',
				'p.model',
				'p.price',
				'p.quantity',
				'p.status',
				'p.sort_order', 
				'p.date_added'
			);	
			
			if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
				$sql .= " ORDER BY " . $data['sort'];	
			} else {
				$sql .= " ORDER BY p.date_added";	
			}

далее в этом же файле

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY pd.name ASC");

меняем на

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY p.date_added ASC");

admin/controller/catalog/product.php (встречается два раза.. менять оба раза)

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

меняем на

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

далее в этом же файле (в двух случаях)

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

на

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

 

А у меня после внесения изменений страница с товарами белая и в журнале ошибок вот такие строки

 

2016-05-21 2:51:00 - PHP Notice:  Error: Unknown column 'pd.date_added' in 'order clause'<br />Error No: 1054<br />SELECT p.*, pd.*,  m.name as 'm_name' FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE pd.language_id = '1' GROUP BY p.product_id ORDER BY pd.date_added DESC LIMIT 0,100 in /home/***/system/database/mysql.php on line 27
2016-05-21 2:51:02 - PHP Notice:  Error: Unknown column 'pd.date_added' in 'order clause'<br />Error No: 1054<br />SELECT p.*, pd.*,  m.name as 'm_name' FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE pd.language_id = '1' GROUP BY p.product_id ORDER BY pd.date_added DESC LIMIT 0,100 in /home/***/system/database/mysql.php on line 27
2016-05-21 2:51:04 - PHP Notice:  Error: Unknown column 'pd.date_added' in 'order clause'<br />Error No: 1054<br />SELECT p.*, pd.*,  m.name as 'm_name' FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE pd.language_id = '1' GROUP BY p.product_id ORDER BY pd.date_added DESC LIMIT 0,100 in /home/***/system/database/mysql.php on line 27
 
Версия движка 1.5.5.1.2, помогите решить.
Надіслати
Поділитися на інших сайтах

  • 1 month later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.