Сортировать по цене не работает в Magento Список продуктов - PullRequest
2 голосов
/ 25 марта 2011

Я не могу отсортировать товар по цене на странице списка товаров.

Сортировка по имени там работает нормально.

Есть идеи, ребята?

Я погуглил и попробовал какое-то решение, но они не решили мою проблему.

Я пытался: Система-> Управление кэшем-> Многослойные индексы навигации-> Обновить сейчас

Также пробовал эту ссылку: http://www.miromedia.co.uk/blog/300/fixing-the-magento-price-sort-issue.htm

Magento версия: 1.3.2.4

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

В этой версии Magento, похоже, есть какая-то ошибка: индекс каталога не обновляется при сохранении продукта.Поэтому вы можете передать ценовое условие, как описано ниже.

Обновить addAttributeToSort функцию Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection класса.

Закомментировать следующий код:-

//        if ($attribute == 'price' && $storeId != 0) {
//            $websiteId = Mage::app()->getStore()->getWebsiteId();
//            $customerGroup = Mage::getSingleton('customer/session')->getCustomerGroupId();
//
//            if ($this->isEnabledFlat()) {
//                $priceColumn = 'e.display_price_group_' . $customerGroup;
//                $this->getSelect()->order("{$priceColumn} {$dir}");
//            }
//            else {
//                $priceAttributeId = $this->getAttribute('price')->getId();
//
//                $entityCondition = '_price_order_table.entity_id = e.entity_id';
//                $storeCondition = $this->getConnection()->quoteInto(
//                    '_price_order_table.website_id = ?',
//                    $websiteId
//                );
//                $groupCondition = $this->getConnection()->quoteInto(
//                    '_price_order_table.customer_group_id = ?',
//                    $customerGroup
//                );
//                $attributeCondition = $this->getConnection()->quoteInto(
//                    '_price_order_table.attribute_id = ?',
//                    $priceAttributeId
//                );
//
//                $this->getSelect()->joinLeft(
//                    array('_price_order_table'=>$this->getTable('catalogindex/price')),
//                    "{$entityCondition} AND {$storeCondition} AND {$groupCondition} AND {$attributeCondition}",
//                    array()
//                );
//                $this->getSelect()->order('_price_order_table.value ' . $dir);
//
//                /**
//                 * Distinct we are using for remove duplicates of products which have
//                 * several rows in price index (like grouped products)
//                 */
//                $this->getSelect()->distinct(true);
//            }
//
//            return $this;
//        }

Вы можете сделать это стандартным способом Magento, не закомментировав основной код.Надеюсь, это поможет.

1 голос
/ 12 апреля 2011

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

Перейдите в управление атрибутами, найдите ценовой атрибут и убедитесь, что вы отметили флажок «сортируемый во внешнем интерфейсе»

, который должен решить это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...