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%わかりませんが、使用する場合は、前に計算されていることを確認するために、$ 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 に答える