Порядок сортировки связанных продуктов, не работающих в Magento 1.6

#sorting #magento #product

#сортировка #magento #продукт

Вопрос:

Я хочу, чтобы Magento сортировал мои связанные продукты по значению позиции, которое я даю им в серверной части. Когда я пытаюсь это сделать, ничего не происходит; связанные продукты по-прежнему сортируются по идентификатору, а не по позиции.

Я проверил каталог конфигурации amp; rarr; Сортировка статей по amp; rarr; Позиции, и, похоже, все в порядке.

Ответ №1:

В версии Magento 1.7.1 эта ошибка была исправлена

 $this->_itemCollection = $product->getRelatedProductCollection()
        ->addAttributeToSelect('required_options')
        ->setPositionOrder()
        ->addStoreFilter()
    ;
  

Ответ №2:

в разделе Mage_Catalog_Block_Product_List_Related

 function _prepareData
  

изменить с

     $this->_itemCollection = $product->getRelatedProductCollection()
        ->addAttributeToSelect('required_options')
        ->addAttributeToSort('position', Varien_Db_Select::SQL_ASC)
        ->addStoreFilter()
    ;
  

Для

     $this->_itemCollection = $product->getRelatedProductCollection()
        ->addAttributeToSelect('required_options')
        ->setOrder('position', Varien_Db_Select::SQL_ASC)
        ->addStoreFilter()
    ;
  

похоже на ошибку

Комментарии:

1. Это ошибка, о которой я впервые сообщил в версии 1.6.0.0 еще в ноябре прошлого года: magentocommerce.com/bug-tracking/issue?issue=12558

Ответ №3:

Я получил эту ошибку в области редактирования продукта Magento в CE 1.5.1.0, вкладка «Перекрестные продажи». Чтобы исправить это, мне пришлось использовать код Magento 1.8

 diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php                                                                           
index 2dd1611..813209e 100755                                                                                                                                                                                                                
--- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php                                                                                                                                                              
    b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php                                                                                                                                                              
@@ -95,20  95,20 @@ class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Crosssell extends Mage_Admin
      */
     protected function _prepareCollection()
     {
         /* @var $collection Mage_Catalog_Model_Resource_Product_Link_Product_Collection */
         $collection = Mage::getModel('catalog/product_link')->useCrossSellLinks()
             ->getProductCollection()
             ->setProduct($this->_getProduct())
-            ->setPositionOrder()
             ->addAttributeToSelect('*');
 
         if ($this->isReadonly()) {
             $productIds = $this->_getSelectedProducts();
             if (empty($productIds)) {
                 $productIds = array(0);
             }
-            $collection->addFieldToFilter('entity_id', array('in'=>$productIds));
             $collection->addFieldToFilter('entity_id', array('in' => $productIds));
         }