如何获得捆绑包选项选择SKU? [英] How do I get bundle option selection SKU?

查看:104
本文介绍了如何获得捆绑包选项选择SKU?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<?php
require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app("default");

$orderNumber = 260038;  

$order = Mage::getModel('sales/order')->loadByIncrementId($orderNumber);

foreach ($order->getAllItems() as $item){ 

    $productOptions = $item->getProductOptions();   
    echo $product_id = $item->product_id;

    $_product=Mage::getModel('catalog/product')->load($product_id);
    if ($_product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE) {

        if (isset($productOptions['bundle_options']))
        {               
            foreach ($productOptions['bundle_options'] as $productOption)
            {               
                echo $value = $productOption['value'][0]['title']; 
                echo ' || ';                
                echo $value = $productOption['value'][0]['qty'];                
                echo ' || '; 
                echo $value = $productOption['value'][0]['price'];  
                echo "<br>";                
            }  
        }           
    }       
}

我能够获得商品的标题,数量和价格,我还想获得商品的SKU.

I am able to get the title, qty and the price of product, I also want to get the product SKU.

推荐答案

捆绑产品可以有选项,选项可以有选择.这是两层"结构.如果您只想获得所有选择而没有选项,则可以使用以下方式:

Bundle products can have options, options can have selections. This is 'two-tier' structure. If you just want to get all selections without options, you can use something like this:

$selections = $product->getTypeInstance(true)
                      ->getSelectionsCollection($product->getTypeInstance(true)
                      ->getOptionsIds($product), $product);
foreach($selections as $selection){ 
   echo $selection->getSku();
}

但是,如果您想获得有关选项及其选择的完整信息,请使用另一种方法(根据您的示例):

But if you want get full information about options and their selections, use next way (based on your example):

<?php
require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app("default");

$orderNumber = 260038;  

$order = Mage::getModel('sales/order')->loadByIncrementId($orderNumber);
$store_id = $order->getStoreId();

foreach ($order->getAllItems() as $item){ 
    $product = Mage::getModel('catalog/product')->setStoreId($store_id)->load($item->product_id);
    $options = Mage::getModel('bundle/option')->getResourceCollection()
                                              ->setProductIdFilter($item->product_id)
                                              ->setPositionOrder(); 
    $options->joinValues($store_id);

    $selections = $product->getTypeInstance(true)
                          ->getSelectionsCollection($product->getTypeInstance(true)
                          ->getOptionsIds($product), $product);

    foreach ($options->getItems() as $option) {
        $option_id = $option->getId();
        echo 'Option: ' . $option->getTitle() . ' [id: ' . $option_id . ']<br />'; 

        foreach($selections as $selection){ 
            if($option_id == $selection->getOptionId()){
                $selection_id         = $selection->getId();
                $selection_name       = $selection->getName();
                $selection_qty        = $selection->getSelectionQty();
                $selection_sku        = $selection->getSku();
                $selection_product_id = $selection->getProductId();
                $selection_weight     = $selection->getWeight();
                $selection_price      = $selection->getPrice();

                $data = 'Selection Name: ' . $selection_name;
                $data .= ', SKU: ' . $selection_sku;
                $data .= ', Qty: ' . $selection_qty;
                $data .= ', ID: ' . $selection_id;
                $data .= ', Product ID: ' . $selection_product_id;
                $data .= ', Weight: ' . $selection_weight;
                $data .= ', Price: ' . $selection_price;

                echo $data . '<br />';
            }
        }
    }
}

?>

这篇关于如何获得捆绑包选项选择SKU?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆