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';
?>
谢谢!
答案 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,如果有人想尝试并给我任何反馈,或者更好地编写自己的修复并提交它们,我会很高兴。)