`
kirenenko04
  • 浏览: 152265 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Add To Cart Programmlly

 
阅读更多
<?php 
class Bysoft_Mycheckout_Model_Addtocart{
	
	/**
	 * When occur FATAL ERROR, it will redo the run function 
	 * @param unknown $i
	 */
	public function shutdown($i) {
		var_dump('already shutdown.');
		$last_error = error_get_last();
		var_dump($last_error);
		register_shutdown_function(array(&$this,'shutdown',$i));
		$this->run($i);
	}
	
	/**
	 * main function:
	 * 1.get the number $i `th user,
	 * 2.login it
	 * 3.get two rand product and add them to user's shopping cart, before that, clear his shopping cart
	 */
	public function run($i) {
		umask(0);
		Mage::app('admin');
		$this->i=$i;
		register_shutdown_function(array(&$this,'shutdown',$i));
		Mage::app()->setCurrentStore(1);
		$websiteId = 1;
		$arr = $this->getProductData();
		$email = 'test_' . $i . '@test.com';
		$password = 'password';
		if ($this->login_user($email,$password)) {
			$this->cleanCart();
			var_dump($this->getCartItemNum());
			if($this->getCartItemNum() < 2) {
				$product_ids = array();
				for ($j = 1; $j <= 2; ++$j) {
					$product_ids[] = $this->saveRandProduct($arr,$j);		
				}
				
				$cart = Mage::getModel('checkout/cart');
				$cart->init();
		
				$customer = Mage::getModel("customer/customer");
				$customer->setWebsiteId(1);
				$customer->loadByEmail($email);
				$customer->load($customer->getId());
				
				$quote = Mage::getSingleton('checkout/session')->getQuote();
				$quote->setCustomer($customer);
				var_dump($quote->getCustomerId());
				$cart->addProductsByIds($product_ids);
				$cart->save();
				
			}
			Mage::getSingleton('customer/session')->logout()->renewSession();
		}
	}
	
	/**
	 * get all useable product sku from a csv file.
	 * @return multitype:unknown
	 */
	public function getProductData() {
		//get product data from csv file(which products have enough stock)
		$file_path = BP . DS . 'media' . DS. 'product_inventory' . DS .'data.csv';
		$fp = fopen($file_path, 'r');
		$res = array();
		$count = 0;
		while ($data = fgetcsv($fp)) {
			if (isset($data[0]) && trim($data[0])!= '' && $count != 0) {
				$res[] = $data;
			}
			++$count;
		}
		return $res;
	}
	
	/**
	 * login a user
	 */
	public function login_user($email,$password) {
		$session = Mage::getSingleton('customer/session');
		try {
			$session->login( $email, $password );
			$session->setCustomerAsLoggedIn($session->getCustomer());
			var_dump($email . ' login successed!');
			return true;
		} catch( Exception $e ) {
			return false;
		}
	
	}
	
	/**
	 * clean current logined user's shopping cart.
	 */
	public function cleanCart() {
		if ($this->getCartItemNum() >0) {
			Mage::getSingleton('checkout/cart')->truncate()->save();
			var_dump('remove all item from cart');
		}
	}
	
	/**
	 * count current user's shopping cart item number
	 */
	public function getCartItemNum() {
		//get cart item (current login user)
		$cart = Mage::getSingleton('checkout/session');
		$cart->init();
		$quote = $cart->getQuote();
		$items = $quote->getAllVisibleItems();
		foreach ($items as $item) {
			//var_dump($item->getData());
		}
		return count($items);
	}
	
	/**
	 * get random product from a array.
	 * @param array $arr
	 * @param int $j
	 * @return int
	 */
	
	public function saveRandProduct($arr,$j) {
		while (!$_product) {
			$num = (rand(($j-1)*(floor(count($arr)/2))+1,$j*floor(count($arr)/2)));
			$product_model = Mage::getModel('catalog/product');
			$productid = $product_model->getIdBySku($arr[$num-1][0]);
			$_product = $product_model->load($productid);
		}
		return $productid;
	}	
}

 

分享到:
评论

相关推荐

    Add to cart JumboAdobeXD源码下载设计素材UI设计.xd

    Add to cart JumboAdobeXD源码下载设计素材UI设计

    eastbay_addtocart:EastBay - 多账户自动加入购物车

    克隆这个git clone https://github.com/hassansin/eastbay_addtocart.git eastbay_addtocart && cd eastbay_addtocart : git clone https://github.com/hassansin/eastbay_addtocart.git eastbay_addtocart && cd ...

    AddToCart-crx插件

    【AddToCart-crx插件】是一款专为增强RegExr平台功能而设计的浏览器扩展程序,主要针对英文用户群体。这款插件的核心目的是启用"AddToCart"功能,为用户的在线购物体验提供便利。 首先,我们需要理解什么是浏览器...

    add to home

    "Add to Home"功能在移动Web开发中是一个常见的特性,允许用户将网页快捷方式添加到他们的设备主屏幕上,类似于一个原生应用的图标。这个功能为用户提供了一种方便的方式,可以快速访问他们频繁使用的Web应用,而...

    add-to-cart

    "Add to Cart"功能在电子商务网站中扮演着至关重要的角色,它是用户将商品加入购物车的交互过程。在这个场景中,HTML(HyperText Markup Language)是构建网页的基础语言,用于定义网页内容的结构和表现。下面我们将...

    VC6.0中“Open File”与“Add to Project”出错+解决办法

    ### VC6.0中“Open File”与“Add to Project”功能异常及修复方法 #### 一、问题背景 Visual C++ 6.0 (简称VC6.0)是一款广泛应用于Windows平台上的C/C++集成开发环境。尽管该软件已发布多年,但由于其稳定性和...

    react-task1-addtocart

    在“react-task1-addtocart”这个项目中,我们主要关注的是使用React库来实现一个购物车功能。React是Facebook开发的一个用于构建用户界面的JavaScript库,尤其适用于构建单页应用(SPA)。在这个任务中,我们将探讨...

    drupal的addtoany模块

    Drupal的AddToAny模块是一个非常实用的工具,尤其对于那些希望增强网站社交分享功能的用户而言。这个模块专为Drupal 6设计,旨在提供一种简便的方式,让访客能够订阅、收藏网页内容,并且能够通过电子邮件轻松地将...

    BestBuy Add To Cart Link Generator-crx插件

    语言:English 在bestbuy产品页面上,单击以创建专用加入卡特网链路的书签 当ps5s,series-xs或图形卡下降时,您有几秒钟 一项采购。 添加到购物车链接比页面上的按钮更可靠,因此此扩展名让您创建自己的。...

    AddToAny:分享任何地方「AddToAny: Share Anywhere」-crx插件

    功能:-AddToAny的通用共享按钮和智能菜单-基于您可能已经在使用的服务进行个性化-与Gmail,WhatsApp,LinkedIn和更多社交媒体网络共享-AddToAny的“更多”按钮可让您随时随时访问任何其他服务-正确-单击以从上下文...

    Add Python to the search path on Windows

    Add Python to the search path on Windows

    VC6_add files to project失效解决方法

    在使用Microsoft Visual C++ 6.0(简称VC6)进行C++开发时,有时会遇到"Add Files to Project"功能失效的问题,这使得无法通过菜单项将新文件添加到项目中,对开发流程造成不便。本文将详细介绍如何解决这个问题,并...

    Add Shopping Cart .zip

    在JavaScript编程领域,"Add Shopping Cart .zip" 文件很可能是包含了一个在线购物车系统的源代码。这个系统可能使用JavaScript作为主要的客户端脚本语言,为用户提供动态交互的体验,例如添加商品、查看购物车内容...

    add_cart-master.zip

    本项目"add_cart-master.zip"显然聚焦于微信小程序的一个核心功能——购物车系统。购物车功能是电商应用的核心组件,用户可以在此添加商品、调整数量并计算总价,同时支持对购物车中的商品进行管理,如删除。 首先...

    Add-nofollow-to-XFN WordPress增加nofollow标签.rar

    插件名称:Add-nofollow-to-XFN 插件功能:在WordPress后台的"链接" - "添加新链接"中的"链接关系(XFN)"中增加一个"nofollow"选项,安装插件后效果如下: 安装方法: 下载插件压缩包,解压后将 "Add-nofollow-to...

    Ajax-Magento-ajax-add-to-cart.zip

    Ajax-Magento-ajax-add-to-cart.zip,[模块magento 1]magento ajax添加到购物车-ajoter vos produits au panier en ajax/感谢ajax将您的产品添加到购物车,ajax代表异步javascript和xml。它是多种web技术的集合,包括...

    quick-add-to-cart

    这个"quick-add-to-cart"项目显然聚焦于实现这一功能,以简化用户从产品库中选择并购买商品的过程。以下是关于这个功能及其实现的一些详细知识点: 1. 用户界面设计:首先,一个直观易用的用户界面(UI)是关键。...

    Altium_Designer设计中Unknown_Pin和Failed_to_add_class_member如何解决

    ### Altium Designer设计中Unknown_Pin和Failed_to_add_class_member问题解决方案 #### 一、问题概述 在使用Altium Designer进行电路板设计时,经常会遇到Unknown_Pin和Failed_to_add_class_member这两种错误提示...

    React全家桶(技术栈) redux 代码

    addToCart: (itemId, quantity) =&gt; dispatch(addToCart(itemId, quantity)), }); export default connect( mapStateToProps, mapDispatchToProps )(CartButton); ``` 以上就是React全家桶中的Redux部分,包括其...

Global site tag (gtag.js) - Google Analytics