Advertisement
andhiirawan

Magento: Checkout - Helper - Cart.php

Nov 27th, 2014 (edited)
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.79 KB | None | 0 0
  1. <?php
  2. //Path : app\code\local\ABC\Checkout\Helper\Cart.php
  3. //http://magento.stackexchange.com/questions/45132/adding-a-product-to-the-cart-via-querystring-using-sku
  4. class ABC_Checkout_Helper_Cart extends Mage_Checkout_Helper_Cart
  5. {
  6.  
  7.     public function getProductIdByParams($param, $outputFlag = true){
  8.  
  9.         $sku = trim($param['sku']);
  10.         $_product = Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())
  11.                                                      ->loadByAttribute('sku', $sku);
  12.  
  13.         if($_product){
  14.             $productTypeId = $_product->getTypeId();
  15.             $productId = $_product->getId();
  16.             if($productTypeId == 'simple'){
  17.                 $result = $outputFlag ? true : $productId;
  18.             }
  19.             elseif($productTypeId == 'configurable'){
  20.                 $color = trim($param['color']);
  21.                 $size = trim($param['size']);
  22.                 $config = trim($param['option']);
  23.  
  24.                 $configurableProduct = Mage::getModel('catalog/product_type_configurable')->setProduct($_product);
  25.                 $simpleCollections = $configurableProduct->getUsedProductCollection()
  26.                                                          ->addAttributeToSelect('id');
  27.                 if(! empty($color)){
  28.                     $attrColor = $_product->getResource()->getAttribute("sp_color");
  29.                     $colorId = $attrColor->usesSource() ? $attrColor->getSource()->getOptionId($color) : '';
  30.                     $simpleCollections->addAttributeToFilter('sp_color', $colorId);
  31.                 }
  32.                 if(! empty($size)){
  33.                     $attrSize = $_product->getResource()->getAttribute("sp_size");
  34.                     $sizeId = $attrSize->usesSource() ? $attrSize->getSource()->getOptionId($size) : '';
  35.                     $simpleCollections->addAttributeToFilter('sp_size', $sizeId);
  36.                 }
  37.                 if(! empty($config)){
  38.                     $attrConfig = $_product->getResource()->getAttribute("sp_config");
  39.                     $configId = $attrConfig->usesSource() ? $attrConfig->getSource()->getOptionId($config) : '';
  40.                     $simpleCollections->addAttributeToFilter('sp_config', $configId);
  41.                 }
  42.                 $simpleCollections->addFilterByRequiredOptions();                                        
  43.                                                          
  44.                 if($simpleCollections->count() == 1){
  45.                     $productId = $simpleCollections->getFirstItem()->getId();
  46.                     $result = $outputFlag ? true : $productId;
  47.                 }
  48.                 else{
  49.                     $result = false;
  50.                 }
  51.                
  52.             }
  53.             return $result;
  54.         }
  55.         return false;
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement