Boris726 Posted April 7, 2013 Share Posted April 7, 2013 Соратники! Столкнулся со следующей проблемой Если посмотреть здесь: http://demo-store.pr...ning-dress.html Сортировка свойств будет такая: Style Strapless Color Length Material Если зайти сюда: http://demo-store.pr...evening-dresses и отметить три товара для сравнения, то на странице сравнения сортировка свойств будет уже другой: Material Style Length Strapless Color Если же начать удалять по одному товары, со страницы сравнеия, то после удаления одного сортировка станет такой: Material: Strapless: Length: Style: Color: Если удалить ещё один товар, то станет другой: Length: Style: Color: Material: Strapless: Получается абсолютно рандомная штука с непонятной логикой работы... Возможно кто-то уже сталкивался с этим? Как победили? Хотелось бы, чтобы сортировка была одна и та же и соответствовала сортировке свойств товара в админке (или на странице товара,что одно и тоже) PrestaShop™ 1.5.3.1 Link to comment Share on other sites More sharing options...
doubleD Posted April 8, 2013 Share Posted April 8, 2013 (edited) Думаю этот topic поможет. Edited April 8, 2013 by doubleD (see edit history) Link to comment Share on other sites More sharing options...
Boris726 Posted April 8, 2013 Author Share Posted April 8, 2013 Спасибо doubleD за ссылку! Там предлагают сортировать по ID. На мой взгляд это полумера - если потом добавить какое-нибудь важное свойство оно будет всегда ниже других. Интересно я один такой сортировкой недоволен или просто никто не замечает? Link to comment Share on other sites More sharing options...
doubleD Posted April 8, 2013 Share Posted April 8, 2013 (edited) Для "правильного" решения, то есть что бы и там и там товары сортировались по позиции свойств указаных в BackOffice нужно заменить ORDER BY nb DESC в Features.php на ORDER BY f.position ASC В файле classes/Feature.php найти функцию public static function getFeaturesForComparison И в SQL запросе заменить строку ORDER BY nb DESC То есть должно остаться return Db::getInstance()->executeS(' SELECT * , COUNT(*) as nb FROM `'._DB_PREFIX_.'feature` f LEFT JOIN `'._DB_PREFIX_.'feature_product` fp ON f.`id_feature` = fp.`id_feature` LEFT JOIN `'._DB_PREFIX_.'feature_lang` fl ON f.`id_feature` = fl.`id_feature` WHERE fp.`id_product` IN ('.$ids.') AND `id_lang` = '.(int)$id_lang.' GROUP BY f.`id_feature` ORDER BY f.position ASC '); Edited April 8, 2013 by doubleD (see edit history) 1 Link to comment Share on other sites More sharing options...
doubleD Posted April 8, 2013 Share Posted April 8, 2013 (edited) Можно и на странице товара и в сравнениях сортировать свойства по имени. Для Features: в classes Features.php все там же заменить ORDER BY nb DESC на ORDER BY fl.name ASC return Db::getInstance()->executeS(' SELECT * , COUNT(*) as nb FROM `'._DB_PREFIX_.'feature` f LEFT JOIN `'._DB_PREFIX_.'feature_product` fp ON f.`id_feature` = fp.`id_feature` LEFT JOIN `'._DB_PREFIX_.'feature_lang` fl ON f.`id_feature` = fl.`id_feature` WHERE fp.`id_product` IN ('.$ids.') AND `id_lang` = '.(int)$id_lang.' GROUP BY f.`id_feature` ORDER BY fl.name ASC '); Для страницы товаров в classes/Product.php заменить ORDER BY f.position ASC на ORDER BY fl.name ASC функция public static function cacheFrontFeatures $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT id_product, 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.') LEFT JOIN '._DB_PREFIX_.'feature f ON (f.id_feature = pf.id_feature) WHERE `id_product` IN ('.implode($product_implode, ',').') ORDER BY fl.name ASC'); Что бы изменения не удалились после обновления эти функции можно поместить в файлы override/classes/Feature.php и override/classes/Product.php соответственно... Для prestashop 1.5.4 предварительно нужно удалить файлик cache/class_index.php как написано в этом топике. Файлы для override прикреплены. override.zip Edited April 8, 2013 by doubleD (see edit history) 1 Link to comment Share on other sites More sharing options...
Boris726 Posted April 9, 2013 Author Share Posted April 9, 2013 Спасибо, doubleD! Всё работает великолепно! Всё же непонятно почему сразу нет нормальной (ORDER BY f.position ASC) сортировки... Link to comment Share on other sites More sharing options...
doubleD Posted April 9, 2013 Share Posted April 9, 2013 Спасибо, doubleD! Всё работает великолепно! Всё же непонятно почему сразу нет нормальной (ORDER BY f.position ASC) сортировки... Препутали может, люди все-таки пишут Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now