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

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


Recommended Posts

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

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

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

3 минуты назад, fanatic сказал:

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

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

Link to comment
Share on other sites

46 минут назад, legioner26 сказал:

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

 

 

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

Edited by vladimirr89
Link to comment
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 comment
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 comment
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
 Share

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