2013-10-24 112 views
0

Magento 1.6.1.0版。我试图编写一些代码来动态更新可配置产品选项的价格。我的最终目标是编写一个模块,根据可配置产品的价格更新可配置产品选件的价格。所附代码从目录中抽出所有可配置产品,并将其与产品选项&价格以及儿童产品名称&价格一起显示。我计划解决可配置产品和每个儿童产品之间的价格差异,并更新适当的价格选项以匹配。到目前为止,我一直无法解决如何更新产品选项的价格。Magento - 更新可配置产品选项的价格

短版本:我只需要一种方法来更新可配置产品的选项的价格。你知道如何做到这一点?

<?php 
require_once './app/Mage.php'; 
Mage::app(); 
Mage::app()->setCurrentStore(1); 

// load in configurable products 
$productConfig = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('type_id', 'configurable'); 
foreach ($productConfig as $_product) 
{ 
    // load the configurable product 
    $_product = Mage::getModel('catalog/product')->load($_product->getId()); 
    echo 'Product Name'; 
    var_dump ($_product->getName()); 
    var_dump ($_product->getPrice()); 
    // Collect options applicable to the configurable product 
    $productAttributeOptions = $_product->getTypeInstance(true)->getConfigurableAttributesAsArray($_product); 
    $attributeOptions = array(); 
    foreach ($productAttributeOptions as $productAttribute) 
     { 
     var_dump($productAttribute['label']); 
     foreach ($productAttribute['values'] as $attribute) 
      { 
      var_dump($attribute); 
      } 
     } 

    // loop through the child products 
    echo 'Child products'; 
    $col = Mage::getModel('catalog/product_type_configurable')->setProduct($_product)->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions(); 
    foreach($col as $simple_product) 
    { 
     var_dump($simple_product->getName()); 
     var_dump($simple_product->getPrice()); 
    } 
} 
echo '~fin'; 
?> 

谢谢!

回答

0

好吧,我解决了这个问题后,相当多的头挠。我不知道我是否做到了“正确”。

我通过手动运行一些SQL来调整catalog_product_super_attribute_pricing表中的定价来解决这个问题。如果您要这样做,则需要一个product_super_attribute_id,如果您有产品ID,则可以从catalog_product_super_attribute表中获得该表。

一个警告:如果某个选项的后端不存在价格(如果该选项存在,但在选择时将产品价格加上0英镑),catalog_product_super_attribute_pricing表中的选项将不会有记录,那么在这种情况下,您将需要插入查询而不是更新。

0

我有同样的问题,我开始做同样的事情:编写一个模块来更新可配置产品的选项。

我最近发表在这里:Magento Configurable Auto Pricing

我测试了它只是EE 1.12,但应与CE也工作,如果有人想尝试一下,给我任何反馈,甚至更好写我会很高兴他自己的修复和承诺:)

相关问题