我正在进行任务,我需要取消分配以前的产品类别&需要动态分配畅销产品(前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查询但还不确定。
如果有人有任何建议,那将非常有帮助。
答案 0 :(得分:0)
您在表格中输入的位置对于所有产品均为0。默认情况下,Magento将按照它们插入类别表而不是位置的顺序对产品进行排序。
您需要相应地修改每个产品的位置,以便能够按默认排序显示它们(使用位置属性完成)。