1

现在我在我的 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() 或其他东西,但从未找到任何有关此的文档。

请赐教。谢谢!

4

2 回答 2

1

这将是我会做的方式。您可以直接从类别中获取产品集合。我不是 100% 确定你真的需要 round 函数,但如果你决定使用它,我会确保你在 $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();
}
于 2012-06-02T14:08:29.933 回答
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();
}

祝你好运。

于 2012-06-02T04:02:20.177 回答