Magento在特定类别的大量更新价格?

时间:2012-06-02 01:44:47

标签: magento

目前我在Magento商店中更新所有产品的价格的是这个片段:

$products = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToSelect('price')
    ->addAttributeToSelect('special_price')
    ;
foreach ($products as $product) {
    $product->setPrice(round($product->getPrice() - 1000.00));
    $product->setSpecialPrice(round($product->getSpecialPrice() - 1000.00));
    $product->save();
}

我的问题是如何更新特定类别中的所有产品而不是整个商店?我想应该有一些更多的选择器,比如 - > addCategoryToSelect()或其他东西,但从未找到任何关于此的文档。

请赐教。谢谢!

2 个答案:

答案 0 :(得分:1)

这就是我这样做的方式。您可以直接从该类别中获取产品集合。我不是100%确定你实际上需要圆函数,但如果你决定使用它,我会确保你在$ product-> getPrice() - 1000周围加上括号以确保它被计算在它发送到函数之前。我选择不在答案中包含它,因为我觉得你不需要它。

尝试一下:

$products = Mage::getModel('catalog/category')
    ->load($category_id)
    ->getProductCollection()
    ->addAttributeToSelect('*');

foreach($products as $product) {
    $product->setPrice(($product->getPrice() - 1000)));
    $product->setSpecialPrice(($product->getSpecialPrice() - 1000)));
    $product->save();
}

答案 1 :(得分:0)

脱离我的头顶:

$category = Mage::getModel('catalog/category')->load($categoryId);
$productCollection = Mage::getResourceModel('catalog/product_collection')
                       ->addCategoryFilter($category);

foreach ($productCollection as $product) {
    $product->setPrice(round($product->getPrice() - 1000.00));
    $product->setSpecialPrice(round($product->getSpecialPrice() - 1000.00));
    $product->save();
}

祝你好运。