2012-07-16 116 views
1

我正在玩程序购物车娱乐。有没有将产品添加到购物车通过ID的问题,即通过SKU添加可配置产品到购物车 - Magento

$params = array(
    'product' => 272, 
    'super_attribute' => array(
     22 =>30 , 
    ), 
    'qty' => 2, 
); 


$cart = Mage::getSingleton('checkout/cart'); 
$product = new Mage_Catalog_Model_Product(); 
$product->load(272); 
$cart->addProduct($product, $params); 
$cart->save(); 
Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 

可是怎么办呢,如果我只知道产品SKU,我的意思是如何让产品ID和super_attributes可配置产品。

Mage::getModel('catalog/product')->loadByAttribute('sku','$sku'); 

似乎只返回该产品(SKU)信息和没有special_attribute。

任何想法?

欢呼声, /马辛

回答

0

你可以通过让集合,由SKU过滤检索产品:

$searchForThisSku = 'p_1234'; 

/** @var $productCollection Mage_Catalog_Model_Resource_Product_Collection */ 
$productCollection = Mage::getModel('catalog/product') 
    ->getResourceCollection() 
    ->addFieldToFilter('sku', $searchForThisSku); 

/** @var $product Mage_Catalog_Model_Product */ 
$product = $productCollection->getFirstItem(); 

// you should have the product now, maybe it isn't even necessary to get the ID 
$product->getId(); 

// all in one line: 
$productId = (int) Mage::getModel('catalog/product') 
    ->getResourceCollection() 
    ->addFieldToFilter('sku', $searchForThisSku) 
    ->getFirstItem() 
    ->getId(); 
+0

差不多在那里,看起来l ike我在收银台上显示时会丢失尺寸/颜色,尽管使用了适当的SKU,但可能是内部问题... – Marcin 2012-07-16 17:43:10

+0

嗯我不知道如何包含super_attribute,看起来像缺少它们是原因 – Marcin 2012-07-16 17:52:07

+0

如果您确实没有看到所有的产品属性,你可能不得不从数据库中加载它的内容:'$ product-> load($ product-> getId());' – feeela 2012-07-17 11:06:51

0

尝试

/** @product Mage_Catalog_Model_Product */ 
$product = Mage::getModel('catalog/product'); 

$sku = 'sku'; 
$product->load($sku, 'sku'); 
3

我认为,feeela没回答问题。

一般(没有错误处理):

$sku = 'any-sku-number'; 
$qty = 1; 

$product = Mage::getModel('catalog/product') 
    ->loadByAttribute('sku', $sku); 

$parentIds = Mage::getResourceSingleton('catalog/product_type_configurable') 
    ->getParentIdsByChild($product->getId()); 

$parent = Mage::getModel('catalog/product')->load(current($parentIds)); 

if ($parent->getTypeId() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) { 
    $paramsSuperAttribute = array('super_attribute' => array()); 

    foreach ($parent->getTypeInstance(true)->getConfigurableAttributes($parent) as $attribute) { 
     $paramsSuperAttribute['super_attribute'][$attribute->getProductAttribute()->getAttributeId()] = 
      (int) $product->getData($attribute->getProductAttribute()->getAttributeCode()); 
    } 
} 

$params = array('qty' => $qty); 
现在

,有两种方式通过SKU将产品添加到购物车:

编程:

$cart = Mage::getSingleton('checkout/cart'); 

$cart->addProduct(isset($parent) ? $parent : $product, array_merge($params, $paramsSuperAttribute))->save(); 

Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 

通过网址:

$addToCartUrl = Mage::helper('checkout/cart') 
    ->getAddUrl(isset($parent) ? $parent : $product, $params); 

if (isset($parent)) { 
    $addToCartUrl .= '?' . http_build_query($paramsSuperAttribute); 
} 

// now you can use this url like this (controller action) 
$this->getResponse()->setRedirect($addToCartUrl); 
return; 
+0

这应该被选作答案,它帮助我更好地理解获得正确的属性值,非常感谢凯文 – 2018-01-02 23:08:58

相关问题