Magento中通过访问Url把产品加入购物车

Magento中可以通过访问Url把产品加入购物车。
1 添加简单产品(Simple Product)
(1) 通过产品id
checkout/cart/add?product=[id]&qty=[qty]
(2) 通过产品sku
      $cProd = Mage::getModel('catalog/product');
      $id = $cProd->getIdBySku("$sku");

2 添加可配置产品(Configurable Product)
checkout/cart/add?product=[id]&qty=[qty]&super_attribute[attribute_id]=[attribute_id]&super_attribute[attribute_id]=attribute_id

其中attribute_id是产品的super attribute所对应的attribute id(注意:super attribute 和 attribute不同, 在编辑Configurable产品时,在添加简单产品时产品的属性就保存在super attribute表中)。

用于生成添加产品到购物车的url函数(仅测试用,用于生产环境要小心):

   public function getAddToCartUrl($simpleProductId , $qty=1 ,$configurableProductId=null)
  		{
	        if(!$configurableProductId){
		        return Mage::getBaseUrl().'checkout/cart/add?product='.$simpleProductId.'&qty='.$qty;
	        }
	        else{
		        $url=Mage::getBaseUrl().'checkout/cart/add?product='.$configurableProductId.'&qty='.$qty.'&';
		        $configurableProduct= Mage::getModel('catalog/product')->load($configurableProductId);
		        $simpleProduct=Mage::getModel('catalog/product')->load($simpleProductId);
		        if($simpleProduct && $configurableProduct && $configurableProduct->getId() && $simpleProduct->getId()){
			        $superAttributes=$this->getAllowAttributes($configurableProduct);
			        $attributeCodes=array();
			        foreach($superAttributes as $superAttribute){
				        $attribute = $superAttribute->getProductAttribute();
				        $attributeCodes[$attribute->getAttributeId()]= $attribute->getAttributeCode();
			        }
			        
			        $superAttributeUrl="";
			        foreach($attributeCodes as $attributeId=>$attributeCode){
				        $superAttributeUrl.='super_attribute['.$attributeId.']='. $simpleProduct->getData($attributeCode).'&';
			        }
		        }
		        //print_r($attributeCodes);
		        $url.=$superAttributeUrl;
		        return $url;
	        }
  		}

你可能感兴趣的:(PHP)