Magento - 更新可配置产品选项的价格

时间:2013-10-24 12:58:54

标签: magento product configurable

Magento版本1.6.1.0。我正在尝试编写一些动态更新可配置产品选项价格的代码。我的最终目标是编写一个模块,根据可配置产品的子产品价格更新可配置产品的价格。附带的代码从目录中提取所有可配置的产品,并将其与产品选项&价格和儿童产品的名称和价钱。我计划计算可配置产品和每个子产品之间的价格差异,并更新价格适当的选项以匹配。到目前为止,我一直无法确定如何更新产品选项的价格。

简短版本:我只需要一种方法来更新可配置产品选项的价格。你知道怎么做吗?

<?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';
?>

谢谢!

2 个答案:

答案 0 :(得分:0)

嗯,我经过一番搔痒后解决了这个问题。我不知道我是否“正确”做到了。

我通过手动运行一些SQL来调整catalog_product_super_attribute_pricing表中的定价来解决它。如果您要执行此操作,则需要product_super_attribute_id,如果您有产品ID,可以从catalog_product_super_attribute表中获取。

一个警告:如果期权的后端中不存在价格(如果该选项存在,但在选择时将产品价格加0英镑),则{{1}中的选项将不会有记录在这种情况下,你需要一个插入查询而不是更新。

答案 1 :(得分:0)

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

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

我只是用EE 1.12进行了测试,但它也适用于CE,如果有人想尝试并给我任何反馈,或者更好地编写自己的修复并提交它们,我会很高兴。)