获取子产品magento

时间:2015-06-15 17:14:35

标签: php xml magento

我需要在magento 1.8.0中使用我的可配置产品的一些信息生成自定义XML架构。在这些信息中,我需要从每个可配置的简单产品中获取一些属性(大小,颜色)。到目前为止,这是我的代码中的一个相关部分,它可以生成我的XML,除了我无法找到获取属性的方法' color'和' shirt_size'来自简单的产品。

$products = Mage::getModel('catalog/product')->getCollection();
$products->addAttributeToFilter('status', 1);
$products->addAttributeToFilter('visibility', 4);
$products->addAttributeToSelect('*');

$xml = new SimpleXMLElement('<xml/>');
foreach ($products as $product_all) {
    $sku = $product_all->getSku(); 
    $price = $product_all->getPrice();

    $prod = $xml->addChild('product');
    $prod->addChild('product_id', "$sku");
    $prod->addChild('price', "$price");
    $prod->addChild('color', "");
    $prod->addChild('shirt_size', "");
}
print($xml->asXML());

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情,它会加载子产品,然后获取其配置选项的属性值:

foreach ($products as $product_all) {
    ...
    $prod = $xml->addChild('product');
    ...

    /* @var Mage_Catalog_Model_Product $product_all */
    if ($product_all->isConfigurable()) {
        $options = $product_all->getOptionList();
        /* @var Mage_Catalog_Model_Product_Type_Configurable $type */
        $type = $product_all->getTypeInstance();
        $children = $type->getUsedProducts(null, $product_all);
        /* @var Mage_Catalog_Model_Product $child */
        foreach ($children as $child) {
            foreach ($options as $option) {
                $prod->addChild($option->code, $child->getAttributeText($option->code));
            }
        }
    }
}