Magento - 循环浏览所有类别的产品,更改价值并保存

时间:2015-01-21 16:35:03

标签: php magento loops collections foreach

我需要遍历特定类别中的所有产品,更改自定义属性,然后保存每个产品。

目前我有:

$_category = Mage::getModel('catalog/category')->load($_POST['id']);
$all_products = $_category->getProductCollection();

foreach ($all_products as $product) {
    $product = Mage::getModel('catalog/product')->load($product->getId());  
    $product->setCustomAttribute(xxxx);
    $product->save();
}

这是最佳做法,是否可以改善性能?这些系列平均每个产品大约有15-20个产品,我的加载时间非常慢,甚至是脚本超时。

我已经使用set_time_limit(0);尝试强制通过,但我想我可以改进我的代码以阻止我这样做?最终,这些系列可能拥有超过100-200种产品,因此现在需要找到一个好的性能

1 个答案:

答案 0 :(得分:1)

如果您正在对相同属性和相同值进行大量更新,请考虑尝试updateAttributes

// Iterate over the foreach and get all the product ids into an array
// $attr = array("attribute_code" => "attribute_value");
Mage::getSingleton("catalog/product_action")->updateAttributes($productIds, $attr, $storeId);

应该快得多。