默认排序不适用于magento中的类别产品

时间:2015-01-28 15:56:29

标签: magento sorting categories

我正在进行任务,我需要取消分配以前的产品类别&需要动态分配畅销产品(前20名)..我正在使用以下代码: -

  $_productCollection = Mage::getModel("catalog/product")->getCollection()
        ->addAttributeToSelect(array('name', 'price', 'small_image'))
        ->addAttributeToSort("entity_id","DESC")
        ->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInSiteIds())
        ->setPageSize($productCount);

        // Delete Existing Mapped product from Category

        $delQuery = 'Delete from catalog_category_product where category_id ='.$catId;
        $writeConnection->query($delQuery);

        foreach($_productCollection as $product){

            $categoryIds = $product->getCategoryIds();
            if (!in_array($catId, $categoryIds)) {
                $write->query("replace into
`catalog_category_product` (category_id,product_id,position)
VALUES (?,?,0)",array($catId,$product->getEntityId()));
            }
        }

        $process = Mage::getModel('index/indexer')->getProcessByCode('catalog_category_product');
        $process->reindexAll();

        $category->save();

代码工作正常,但一旦动态产品被分配到该类别的后端排序(默认产品列表排序),该类别产品停止工作..我怀疑这可能是因为我的每个替换产品的位置为0查询但还不确定。

如果有人有任何建议,那将非常有帮助。

1 个答案:

答案 0 :(得分:0)

您在表格中输入的位置对于所有产品均为0。默认情况下,Magento将按照它们插入类别表而不是位置的顺序对产品进行排序。

您需要相应地修改每个产品的位置,以便能够按默认排序显示它们(使用位置属性完成)。