久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Magento:將捆綁中的簡單產(chǎn)品添加到購物車中的單獨(dú)

Magento: Adding simple products from a bundle to separate lines in the cart(Magento:將捆綁中的簡單產(chǎn)品添加到購物車中的單獨(dú)行)
本文介紹了Magento:將捆綁中的簡單產(chǎn)品添加到購物車中的單獨(dú)行的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我的客戶要求在用戶添加時(shí),將他們銷售的捆綁產(chǎn)品中的每個(gè)簡單產(chǎn)品(上衣和下衣)作為單獨(dú)的行項(xiàng)目添加到購物車中.誰能指導(dǎo)我如何做到這一點(diǎn)?我對(duì) MVC 和 Zend 框架相當(dāng)擅長,但我需要一些幫助來找到控制將捆綁產(chǎn)品添加到購物車的確切文件,或者另一種方法來單獨(dú)添加這些項(xiàng)目.請(qǐng)假設(shè)此服裝唯一可能的產(chǎn)品類型是捆綁產(chǎn)品類型.

My client is requesting that each simple product within a bundled product they are selling (Clothing Top and Bottom) be added as a separate line item in the cart whenever a user adds it. Can anyone direct me in how to accomplish this? I am fairly good with MVC and the Zend Framework, but I need a bit of help finding the exact files that control adding bundled products to the cart, or an alternate method for getting these items added separately. Please assume that the only possible product type for this clothing is the Bundled product type.

推薦答案

你需要一個(gè)觀察者:

    <checkout_cart_product_add_after>
        <observers>
            <reporting>
                <type>singleton</type>
                <class>Yourcompany_yourmodelname_Model_Observer</class>
                <method>onCartProductAdd</method>
            </reporting>
        </observers>
    </checkout_cart_product_add_after>

然后做觀察者:

class ourcompany_yourmodelname_Model_Observer extends Mage_Core_Model_Abstract
{
    /**
     * Binds to the checkout_cart_product_add_after Event and passes control to the helper function to process the quote
     *
     * @param Varien_Event_Observer $observer
     * @return void
     */
    public function onCartProductAdd($observer){
        $product = $observer->getProduct();
        $isProductBundle = ($product->getTypeId() == 'bundle');
        $items_to_add = array();
        $oTypeInstance = $oProduct->getTypeInstance(true);
        $aSelections = $oTypeInstance->getSelectionsCollection($aOptionIds, $product );
        $aOptions = $oTypeInstance->getOptionsByIds($aOptionIds, $product);
        $bundleOptions = $aOptions->appendSelections($aSelections, true);
        foreach ($bundleOptions as $bundleOption) {
            if ($bundleOption->getSelections()) {
                $bundleSelections = $bundleOption->getSelections();    
                foreach ($bundleSelections as $bundleSelection) {
                       $items_to_add[] = $bundleSelection.getID();

               }

            }
       }
       insertExtractedProducts($items_to_add);
    }

     /**
     * Add extracted products into quote
     *
     * @param array $items_to_add
      */
    public function insertExtractedProducts($items_to_add){
        /**@var $cart Mage_Checkout_Model_Cart**/
        $cart = Mage::helper('checkout/cart')->getCart();
        $ids_to_add = array();
        foreach($items_to_add as $item_to_be_added){
            $ids_to_add[] = $item_to_be_added->getProductId();
        }
        $cart->addProductsByIDs($ids_to_add);
        $cart->save();
        Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
        }
   }

只是一個(gè)簡單的示例,但可能會(huì)有所幫助.

Just a simple sample, but it might help.

捆綁產(chǎn)品在通過代碼使用時(shí)可能會(huì)很復(fù)雜,難以理解:這是一個(gè)示例圖像:

Bundled products can be complicated to understand, when working with it via code: Here is a sample image:

每個(gè)捆綁產(chǎn)品都有一對(duì)多的選項(xiàng),最終將是要添加到購物車中捆綁產(chǎn)品的鏈接.

Each Bundled product, have one to many options, which in the end will be links to products to be added to the bundle in the Shopping Cart.

每個(gè)選項(xiàng)由一對(duì)多的選擇組成,這些選擇將是最終出現(xiàn)在購物車中的鏈接產(chǎn)品,位于此捆綁產(chǎn)品下.一個(gè)選擇,通常可以設(shè)置為默認(rèn)值,并且已經(jīng)在產(chǎn)品頁面上被選中.可以在此鏈接中找到有關(guān)如何創(chuàng)建和配置捆綁產(chǎn)品的更多信息,因?yàn)樵诒疚臋n中,我們將只討論它的編程方面.捆綁產(chǎn)品的顯示頁面將如下所示:

Each Option consists of one to many Selections, which will be the linked products that will end up in the Shopping cart, under this bundled product. One Selection, can typically be set as the default, and will already be selected on the product page. More information can be found at this link on how to create and configure bundled products, because in this document, we will only discuss the programming side of it. The bundled product’s display page, will look like this:

點(diǎn)擊添加到購物車"后,它在購物車中可能看起來像這樣:捆綁樣品

It could look like this in the shopping cart, once you clicked on "Add to Cart": Bundle Sample

Sample Shampoo
1 x Moisturiser-125ml $29.95
Default Conditioner
1 x Moisturiser-60g $99.95

當(dāng)通過代碼查詢這個(gè)產(chǎn)品時(shí),你像任何普通產(chǎn)品一樣加載它:

When interrogating this product through code, you load it like any normal product:

$oProduct->load($vProductId);

一旦加載完畢,您需要獲取一個(gè)產(chǎn)品類型實(shí)例,以便您可以加載該產(chǎn)品類型的選項(xiàng).

Once it is loaded, you need to get a product type instance, so that you can load the options for this product type.

$oTypeInstance = $oProduct->getTypeInstance(true);

現(xiàn)在我們可以通過這種方式獲取此產(chǎn)品的選項(xiàng) ID 列表:

Now we can get the list of option ID’s for this product in this manner:

$oTypeInstance = $oProduct->getTypeInstance(true);

為了查詢選擇,我們將選項(xiàng)列表添加到集合中,然后獲取選項(xiàng)集合,以及它們各自的選擇:

To interrogate the Selections, we will add the list of options to a collection, then get the Options collection, as well as their respective Selections:

$aSelections = $oTypeInstance->getSelectionsCollection($aOptionIds, $oProduct );
$aOptions = $oTypeInstance->getOptionsByIds($aOptionIds, $oProduct);
$bundleOptions = $aOptions->appendSelections($aSelections, true);

現(xiàn)在我們有一個(gè)選項(xiàng)集合,每個(gè)選項(xiàng)都有一個(gè)選擇集合.我們現(xiàn)在可以遍歷選項(xiàng),并查看它們的選擇.

Now we have a Collection of Options, and each Option will have a collection of Selections. We can now loop through the options, and look at their Selctions.

foreach ($bundleOptions as $bundleOption) {
            if ($bundleOption->getSelections()) {
                $bundleSelections = $bundleOption->getSelections();

                foreach ($bundleSelections as $bundleSelection) {
                     // get some data here
                     $vName = $bundleOption->getTitle();
               }

            }
}

要獲取捆綁產(chǎn)品的必選產(chǎn)品列表,您可以使用以下代碼:

To get a list of the Required Selection Products for the Bundled product, you can use the following code:

$requiredChildren = $this->getChildrenIds($product->getId(),$required=true);

然后,您可以遍歷 ID 數(shù)組并按 ID 加載產(chǎn)品,以獲取有關(guān)這些產(chǎn)品的更多信息.

You can then loop through the array of ID’s and load the products by their ID’s to get more information regarding those products.

購物車中的捆綁產(chǎn)品

為了循環(huán)瀏覽購物卡中捆綁產(chǎn)品的選定選項(xiàng),您可以使用以下內(nèi)容:

In order to loop through the selected options of a Bundled product in the shopping card, you can use something like this:

/**
 * @var Mage_Bundle_Model_Product_Type
 */
$typeInstance = $this->getProduct()->getTypeInstance(true);

// get bundle options
$optionsQuoteItemOption =  $this->getItem()->getOptionByCode('bundle_option_ids');
$bundleOptionsIds = unserialize($optionsQuoteItemOption->getValue());
if ($bundleOptionsIds) {
    /**
    * @var Mage_Bundle_Model_Mysql4_Option_Collection
    */
    $optionsCollection = $typeInstance->getOptionsByIds($bundleOptionsIds, $this->getProduct());

    // get and add bundle selections collection
    $selectionsQuoteItemOption = $this->getItem()->getOptionByCode('bundle_selection_ids');

    $selectionsCollection = $typeInstance->getSelectionsByIds(
        unserialize($selectionsQuoteItemOption->getValue()),
        $this->getProduct()
    );

    $bundleOptions = $optionsCollection->appendSelections($selectionsCollection, true);
    foreach ($bundleOptions as $bundleOption) {
        if ($bundleOption->getSelections()) {
            $label = $bundleOption->getTitle()

            $bundleSelections = $bundleOption->getSelections();

            foreach ($bundleSelections as $bundleSelection) {                        
                    $sName = $bundleSelection->getName();
            }
            // some more code here to do stuff
        }
    }
}

此代碼從 Quote Item Bundled Product 中獲取 Options,然后在一個(gè)集合中獲取該產(chǎn)品的 Options,然后找到Selected"Option Selection.

This code gets the Options from the Quote Item Bundled Product, and then gets the Options for that product in a collection, and then finds the "Selected" Option Selection.

嗯,肖恩

這篇關(guān)于Magento:將捆綁中的簡單產(chǎn)品添加到購物車中的單獨(dú)行的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Joining 2 tables in SELECT(MYSQL/PHP)(在 SELECT(MYSQL/PHP) 中加入 2 個(gè)表)
How to make lt;option selected=quot;selectedquot;gt; set by MySQL and PHP?(如何使lt;option selected=“selectedgt;由 MySQL 和 PHP 設(shè)置?)
Auto populate a select box using an array in PHP(使用 PHP 中的數(shù)組自動(dòng)填充選擇框)
PHP SQL SELECT where like search item with multiple words(PHP SQL SELECT where like search item with multiple words)
json_encode produce JSON_ERROR_UTF8 from MSSQL-SELECT(json_encode 從 MSSQL-SELECT 產(chǎn)生 JSON_ERROR_UTF8)
MySQL ORDER BY rand(), name ASC(MySQL ORDER BY rand(),名稱 ASC)
主站蜘蛛池模板: 色呦呦网站 | 色婷婷久久 | 狠狠热视频 | 欧美日本韩国一区二区 | 精品免费国产一区二区三区 | 久久精品免费看 | 激情久久网 | 精品欧美乱码久久久久久1区2区 | 久久久久国产 | 鸳鸯谱在线观看高清 | 亚洲国产成人精品久久久国产成人一区 | 午夜免费网站 | 日本视频免费 | 久久99久久99 | 国产精品1区2区 | 一区二区高清 | 欧美精品一区二区三区蜜桃视频 | 黄色免费在线网址 | 一级毛片播放 | 最新免费黄色网址 | 国产精品一区二区在线 | 国产精品7777777 | 色偷偷噜噜噜亚洲男人 | 国产不卡一区在线观看 | 国产精品国产三级国产a | 在线观看免费高清av | 欧美日韩亚洲国产综合 | 国产精品a级| 国产一级片一区二区 | 色婷婷一区 | 欧美精品影院 | 99在线精品视频 | 欧美日韩久久久 | 亚洲国产成人精品久久久国产成人一区 | 自拍偷拍亚洲欧美 | 精品国产三级 | 国产欧美精品在线 | 国产黄色大片 | 九九导航 | 男女一区二区三区 | 黄色网页在线观看 |