0

用库存水平更新所有产品后,将所有可配置产品设置为有库存的最佳方法是什么?最好的方式,我的意思是最快的,服务器上的负载最少。

编辑:

我忘了说,如何以编程方式执行此操作!

4

2 回答 2

6

在您Catalog > Manage Products看来:

从网格的下拉列表中选择“可配置”:

订单网格视图配置选择

单击网格表标题中的“全选”:

全选

从网格顶部的下拉菜单中选择“更新属性”,然后单击“提交”:

在此处输入图像描述

最后,您可以从下一个屏幕执行批量库存更新。单击屏幕左侧的“库存”选项卡,并将它们全部设置为“有货”和“已启用”。

在此处输入图像描述

于 2012-10-30T17:00:02.077 回答
3

根据您的版本,您可以从管理界面选择所有可配置类型的产品,然后选择Actions -> Update Attributes -> Inventory.

示例(参见最后一个选项):http: //i.imgur.com/x03YN.png

要么是这样,要么是编写自己的脚本,这很可能会做同样的事情(如果忘记验证调用或其他东西不会降低效率,天堂禁止它错误地留下孤立的数据库条目,这会导致你进入一个世界在负载/时间和有效性方面的某个点或另一个疼痛)。老实说,除非您的可配置产品数量达到数万,或者您的服务器规格非常差,否则我无法想象它需要很长时间,在这种情况下,它可能一开始就不会运行 Magento。

编辑:
这应该让你以编程方式进行。但请注意,“Stock Item”的 Magento 工具在其整个生命周期内发生了很大变化,因此请务必在您的版本上进行测试以确保它首先工作。

// Get all products with a type_id of configurable                                                                                                                                                                                          
$configurable_products = 
Mage::getModel('catalog/product')->getCollection()                                                                                                                                                                                                                           
                                 ->addAttributeToFilter('type_id', 'configurable');                                                                                                                                                                                          


foreach ($configurable_products as $configurable_product) {                                                                                                                                                                                 
  $configurable_product->load();                                                                                                                                                                                                            

  // Set is in stock attribute to 1                                                                                                                                                                                                         
  $configurable_product->getStockItem()->setIsInStock(1);                                                                                                                                                                                   

  try {                                                                                                                                                                                                                                     
    $configurable_product->getStockItem()->save();                                                                                                                                                                                                          
  } catch (Exception $e) {                                                                                                                                                                                                                  
    // Failed to save for some reason...                                                                                                                                                                                                    
  }                                                                                                                                                                                                                                         
}
于 2012-10-30T16:59:10.603 回答