Jump to content
Sign in to follow this  
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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

 

Ос 1.5.5.1.2

 

VQMod_Product_Filter_by_date_OC_1.5.5.1 v1.5.5.1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

Имеем

			$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'";	
//по желанию
			}

Share this post


Link to post
Share on other sites

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

 

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

$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";	
			}

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

Share this post


Link to post
Share on other sites

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

 

Рядом....

$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");

 

Share this post


Link to post
Share on other sites

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

 

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

 

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

		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';
        }

Share this post


Link to post
Share on other sites
        if (isset($this->request->get['sort'])) {
            $sort = $this->request->get['sort'];
        } else {
            $sort = 'pd.date_added';
        }

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

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

Share this post


Link to post
Share on other sites

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

Да, конечно.

 

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

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

Share this post


Link to post
Share on other sites

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

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:

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

дошло

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

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

Share this post


Link to post
Share on other sites

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

ORDER BY p.date_added

 

а не как у вас

ORDER BY pd.date_added

Share this post


Link to post
Share on other sites

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

ORDER BY p.date_added

 

а не как у вас

ORDER BY pd.date_added

 

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

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  

  • 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.