Перейти к содержанию
Ketty83

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

Рекомендуемые сообщения

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

Ос 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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:cry: неужели никто не знает??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

 

Ос 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:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для 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';
		}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дошло

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня тоже один раз )) на 1 5 работает на ура , а на 2 0 есть решение ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Для 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, помогите решить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

потому что в запросе нужно было указать

ORDER BY p.date_added

 

а не как у вас

ORDER BY pd.date_added

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

потому что в запросе нужно было указать

ORDER BY p.date_added

 

а не как у вас

ORDER BY pd.date_added

 

Огромное спасибо! Все работает!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня тоже один раз )) на 1 5 работает на ура , а на 2 0 есть решение ? 

 

Готовое решение

https://isenselabs.com/posts/how-to-add-sorting-by-date-to-the-product-list-in-opencart-2x

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.