Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Как настроить сортировку категорий фильтра?


Recommended Posts

Есть простейший фильтр, в котором задан порядок сортировки (см. скриншот). НО почему то на выходе все равно сортирует по алфавиту, где задать этот порядок, чтобы сортировало как надо?

Скриншот 01-05-2018 152511.jpg

Link to post
Share on other sites

5 минут назад, vladimirr89 сказал:

Есть простейший фильтр, в котором задан порядок сортировки (см. скриншот).

это сортировка вывода фильтров, а не товаров 

Link to post
Share on other sites

Скачайте фикс, он бесплатно выложен. fix_filter.ocmod.xml

 

Link to post
Share on other sites
3 минуты назад, fanatic сказал:

это сортировка вывода фильтров, а не товаров 

Так ему это и нужно помоему.

Link to post
Share on other sites
46 минут назад, legioner26 сказал:

Скачайте фикс, он бесплатно выложен. fix_filter.ocmod.xml

 

 

Я бы с радостью, но уже все настроено, затык на этой сортировке фильтров случился. Может кэш какой почистить надо или есть файлы, отвечающие за это, я бы там прописал что-то типа "orderBy('id')"

Edited by vladimirr89
Link to post
Share on other sites

Вот метод

public function getCategoryFilters($category_id) {

Link to post
Share on other sites

Находится в catalog/model/catalog/category.php

Link to post
Share on other sites

del/

пока писал, опередили

Link to post
Share on other sites

Вот пример запроса через phpMyAdmin для наглядности.

SELECT DISTINCT f.filter_group_id, fgd.name, fg.sort_order FROM oc_filter f LEFT JOIN oc_filter_group fg ON (f.filter_group_id = fg.filter_group_id) LEFT JOIN oc_filter_group_description fgd ON (fg.filter_group_id = fgd.filter_group_id) WHERE f.filter_id IN (44,19,27,51) AND fgd.language_id = '1' GROUP BY f.filter_group_id ORDER BY fg.sort_order, LCASE(fgd.name)

http://prntscr.com/jcdm0s

Link to post
Share on other sites
3 часа назад, legioner26 сказал:

Находится в catalog/model/catalog/category.php

 

Собсно вод код, в нем четко написано "сортируем по полю sort_order", но почему-то оно сортирует все равно по name. Удалял это поле, разные методы пробовал другие, никаких изменений. Изменил в базе данных название фильтра, в админке название сменилось, а на сайте нифига. Что это вообще такое, куда сохраняются эти данные?? Я не особо еще в опен карт, в какие кэши еще сохраняется информация кроме system/storage/cache? Сижу ковыряю уже 2 часа, не понимаю в чем проблема. Подскажите пожалуйста!

	public function getCategoryFilters($category_id) {
		$implode = array();

		$query = $this->db->query("SELECT filter_id FROM " . DB_PREFIX . "category_filter WHERE category_id = '" . (int)$category_id . "'");

		foreach ($query->rows as $result) {
			$implode[] = (int)$result['filter_id'];
		}

		$filter_group_data = array();

		if ($implode) {
			$filter_group_query = $this->db->query("SELECT DISTINCT f.filter_group_id, fgd.name, fg.sort_order FROM " . DB_PREFIX . "filter f LEFT JOIN " . DB_PREFIX . "filter_group fg ON (f.filter_group_id = fg.filter_group_id) LEFT JOIN " . DB_PREFIX . "filter_group_description fgd ON (fg.filter_group_id = fgd.filter_group_id) WHERE f.filter_id IN (" . implode(',', $implode) . ") AND fgd.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY f.filter_group_id ORDER BY fg.sort_order, LCASE(fgd.name)");

			foreach ($filter_group_query->rows as $filter_group) {
				$filter_data = array();

				$filter_query = $this->db->query("SELECT DISTINCT f.filter_id, fd.name FROM " . DB_PREFIX . "filter f LEFT JOIN " . DB_PREFIX . "filter_description fd ON (f.filter_id = fd.filter_id) WHERE f.filter_id IN (" . implode(',', $implode) . ") AND f.filter_group_id = '" . (int)$filter_group['filter_group_id'] . "' AND fd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY f.sort_order, LCASE(fd.name)");

				foreach ($filter_query->rows as $filter) {
					$filter_data[] = array(
						'filter_id' => $filter['filter_id'],
						'name'      => $filter['name']
					);
				}

				if ($filter_data) {
					$filter_group_data[] = array(
						'filter_group_id' => $filter_group['filter_group_id'],
						'name'            => $filter_group['name'],
						'filter'          => $filter_data
					);
				}
			}
		}

		return $filter_group_data;
	}

 

Link to post
Share on other sites

system/storage/modification/catalog/model/catalog/category.php

есть такой файл?

Link to post
Share on other sites
20 часов назад, fanatic сказал:

system/storage/modification/catalog/model/catalog/category.php

есть такой файл?

в том то и дело, что нету

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

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.