Jump to content

Сортировка Характеристик товара.


Recommended Posts

Суть вопроса в следующем:

Вопрос был в том, как добиться произвольного порядка отображения? У меня кроме как нумерацией характеристик, типа:

01. Мощность

02. Производительность

03. Вес

04. .....

никак не получается.... ;(

Сортировка идет по "Порядку создания Features ".

То есть нужно сразу продумать "Характеристики" и их порядок отображения.

И создать их в нужном для вас порядке.

 

Есть еще в базе параметр "id_feature" но мы его пока не трогали, поэтому не знаю к чему приведет изменения ID в базе данных.

 

Я тоже так думал, написал характеристики по "логическому" порядку, а эта "хрень" все равно отсортировала мне их по алфавиту...

Аналогичная проблема!!! Как решить!? Для сравнения товаров необходимая вещь, а сортировки нет... У меня электронасосы - там длина с в разных системах затесалась, вес в мощьности и глубине погружения.... бред полный. смешно даже. А через конфигуратор добавлять умом тронешься и в итоге все равно не то что нужно. в сравнении он не участвует. ХЕЛП ЭНИБАДИ ХЕЛП!!

В общем интересно, кто как решал эту проблему.

И может кто-то в курсе будет ли в последующих версиях Престы возможность сортировки "Характеристик" по ID?

 

Варианты решения:

В override/classes/Product.php создаем файл

 

<?php
class Product extends ProductCore
{
public static function getFrontFeaturesStatic($id_lang, $id_product)
{
	if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache))
	{
		self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
		SELECT name, value, pf.id_feature
		FROM '._DB_PREFIX_.'feature_product pf
		LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
		LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
		WHERE pf.id_product = '.(int)$id_product.' ORDER BY name');

		foreach (self::$_frontFeaturesCache[$id_product.'-'.$id_lang] as &$feature)
			$feature['name']=Category::hideCategoryPosition($feature['name']);
	}
	return self::$_frontFeaturesCache[$id_product.'-'.$id_lang];
}
}

 

Теперь свойства сортируются по алфавиту как категории в версии 1.3

Link to comment
Share on other sites

надо бы разобраться - неужели этот момент настолько мелок, что его даже не обсуждают? как же товары сравнивать? никто не заполняет эти поля? странно...
НУЖЕН ХЕЛПЕР!

Link to comment
Share on other sites

как же товары сравнивать? никто не заполняет эти поля?

Да и по поводу сравнения товаров.

Если сортировать товары при помощи фильтра (модуль фильтра обсуждается ТУТ) то пропадает возможность сравнивать товары.
Дело в том, что исчезает поле для установки флажка "Сравнить".

Кто-то решил эту проблему?
Link to comment
Share on other sites

тот фильтр буду изучать после выходных... а по поводу исчезновения - галочки сравнить - интересный вопрос. Как решить?
и на счет сортировки - я уже готов с кем нить скинуться, что бы знающий чел помог... я пока базу забиваю... на след неделе запускать буду... не может же не решиться!!! ХЕЛП!!!

Link to comment
Share on other sites

тот фильтр буду изучать после выходных... а по поводу исчезновения - галочки сравнить - интересный вопрос. Как решить?
и на счет сортировки - я уже готов с кем нить скинуться, что бы знающий чел помог... я пока базу забиваю... на след неделе запускать буду... не может же не решиться!!! ХЕЛП!!!


Присоединяюсь, сортировка уж очень нужна.
Link to comment
Share on other sites

  • 2 weeks later...

В override/classes/Product.php создаем файл

 

<?php
class Product extends ProductCore
{
public static function getFrontFeaturesStatic($id_lang, $id_product)
{
	if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache))
	{
		self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
		SELECT name, value, pf.id_feature
		FROM '._DB_PREFIX_.'feature_product pf
		LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
		LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
		WHERE pf.id_product = '.(int)$id_product.' ORDER BY name');

		foreach (self::$_frontFeaturesCache[$id_product.'-'.$id_lang] as &$feature)
			$feature['name']=Category::hideCategoryPosition($feature['name']);
	}
	return self::$_frontFeaturesCache[$id_product.'-'.$id_lang];
}
}

 

Теперь свойства сортируются по алфавиту как категории в версии 1.3

Link to comment
Share on other sites

  • 2 weeks later...

Проблема вот в чем. Поставил я версию 1.4.4. В ней новый блок Layered, поставил на локальный сервер, все работает. В блоке реализована возможность выбора отдельных фильтров для каждой категории сайта, все как хотелось. Вродебы все круто, НО перенес я его на хостинг, он перестал работать. В модуле не открывается выбор категорий сайта, хотя на компе все работает! С техподдержкой хостинга ничего не смог решить. Они переносили аккаунт на разные сервера, но всеравно не работает.

Я в тупике. Задавал этот вопрос на нескольких форумах, но такое чувство, что меня все специально игнорируют :). Кто пробовал ставить новую престу? Как работает модуль и, если да, какой у Вас хостинг?

 

Буду благодарен, если хоть тут мне ответят.

Link to comment
Share on other sites

Проблема вот в чем. Поставил я версию 1.4.4. В ней новый блок Layered, поставил на локальный сервер, все работает. В блоке реализована возможность выбора отдельных фильтров для каждой категории сайта, все как хотелось. Вродебы все круто, НО перенес я его на хостинг, он перестал работать. В модуле не открывается выбор категорий сайта, хотя на компе все работает! С техподдержкой хостинга ничего не смог решить. Они переносили аккаунт на разные сервера, но всеравно не работает.

Я в тупике. Задавал этот вопрос на нескольких форумах, но такое чувство, что меня все специально игнорируют :). Кто пробовал ставить новую престу? Как работает модуль и, если да, какой у Вас хостинг?

 

Буду благодарен, если хоть тут мне ответят.

Вчера установил 1.4.4. Менюшка выбора в модуле фильтров (раздел 2/3) появилась, я выбрал нужные мне разделы и сохранил. В итоге ничего не сохранилось (права 775 и 777 ставить пробовал). Работаю по старинке (правлю ручками файлик)

Link to comment
Share on other sites

  • 6 months later...
Суть вопроса в следующем: В общем интересно, кто как решал эту проблему. И может кто-то в курсе будет ли в последующих версиях Престы возможность сортировки "Характеристик" по ID? Варианты решения:

 

У меня версия 1.4.4 от ПрестаДев и мне тоже не нравилась сортировка характеристик товара по алфавиту.

Я попробовал добавить в classes/Product.php

в функцию

public static function getFrontFeaturesStatic($id_lang, $id_product) (2719 строка)

добавить в конце перед скобкой закрытия SQL запроса:

' ORDER BY `id_feature`'

и теперь сортируется в том порядке, в котором эти характеристики были добавлены в таблицу.

Выход хоть и не очень изящный, но по крайней мере габариты теперь у меня всегда идут вверху...

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