magento添加多个产品到购物车(Add multiple products to cart )
Step 1
app\design\frontend\base\default\template\catalog\product\list.phtml
<?php
$_productCollection=$this->getLoadedProductCollection();
$_helper = $this->helper('catalog/output');
?>
<?php if(!$_productCollection->count()): ?>
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
<?php else: ?>
<div class="category-products">
<?php echo $this->getToolbarHtml() ?>
<!-- junpeng add start -->
<form action="<?php echo
$this->helper('multiadd/cart')->getAddToCartUrl() ?>"
method="post" id="productAddToCartForm">
<!-- junpeng end end -->
<?php // List mode ?>
<?php if($this->getMode()!='grid'): ?>
<?php $_iterator = 0; ?>
<ol class="products-list" id="products-list">
<?php foreach ($_productCollection as $_product): ?>
<li class="item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?>">
<?php // Product Image ?>
<a href="http://zjp2230987.blog.163.com/blog/<?php echo $_product->getProductUrl() ?>"
title="<?php echo
$this->stripTags($this->getImageLabel($_product, 'small_image'),
null, true) ?>" class="product-image"><img src="http://zjp2230987.blog.163.com/blog/<?php echo
$this->helper('catalog/image')->init($_product,
'small_image')->resize(135); ?>" width="135" height="135"
alt="<?php echo
$this->stripTags($this->getImageLabel($_product, 'small_image'),
null, true) ?>" /></a>
<?php // Product description ?>
<div class="product-shop">
<div class="f-fix">
<?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
<h2 class="product-name"><a href="http://zjp2230987.blog.163.com/blog/<?php echo
$_product->getProductUrl() ?>" title="<?php echo
$_productNameStripped; ?>"><?php echo
$_helper->productAttribute($_product, $_product->getName() ,
'name'); ?></a></h2>
<?php if($_product->getRatingSummary()): ?>
<?php echo $this->getReviewsSummaryHtml($_product) ?>
<?php endif; ?>
<!-- junpeng add start -->
<?php if(Mage::getSingleton('customer/session')->isLoggedIn()):?>
<?php echo $this->getPriceHtml($_product, true) ?>
<?php if($_product->isSaleable()): ?>
<?php if(!$_product->isGrouped()): ?>
<input type="hidden" name="products[]" value="<?php echo $_product->getId()?>" />
<label for="qty<?php echo $_product->getId()?>"><?php
echo $this->__('Qty') ?>:</label>
<input type="text" name="qty<?php echo
$_product->getId()?>" id="qty<?php echo
$_product->getId()?>" maxlength="12" value="<?php echo
($this->getMinimalQty($_product)?$this->getMinimalQty($_product):0)
?>" class="input-text qty" />
<?php endif; ?>
<?php else: ?>
<p class="availability out-of-stock"><span><?php echo
$this->__('Out of stock') ?></span></p>
<?php endif; ?>
<?php else: ?>
<p><a href="http://zjp2230987.blog.163.com/blog/<?php echo
Mage::helper('customer')->getLoginUrl(); ?>"><?php echo
$this->__('Login to view pricing') ?></a></p>
<?php endif; ?>
<!-- junpeng add end -->
<div class="desc std">
<?php echo $_helper->productAttribute($_product,
$_product->getShortDescription(), 'short_description') ?>
<a href="http://zjp2230987.blog.163.com/blog/<?php echo $_product->getProductUrl() ?>"
title="<?php echo $_productNameStripped ?>"
class="link-learn"><?php echo $this->__('Learn More')
?></a>
</div>
<ul class="add-to-links">
<?php if ($this->helper('wishlist')->isAllow()) : ?>
<li><a href="http://zjp2230987.blog.163.com/blog/<?php echo
$this->helper('wishlist')->getAddUrl($_product) ?>"
class="link-wishlist"><?php echo $this->__('Add to Wishlist')
?></a></li>
<?php endif; ?>
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
<li><span class="separator">|</span> <a
href="http://zjp2230987.blog.163.com/blog/<?php echo $_compareUrl ?>" class="link-compare"><?php
echo $this->__('Add to Compare') ?></a></li>
<?php endif; ?>
</ul>
</div>
</div>
</li>
<?php endforeach; ?>
</ol>
<script type="text/javascript">decorateList('products-list', 'none-recursive')</script>
<?php else: ?>
<?php // Grid Mode ?>
<?php $_collectionSize = $_productCollection->count() ?>
<?php $_columnCount = $this->getColumnCount(); ?>
<?php $i=0; foreach ($_productCollection as $_product): ?>
<?php if ($i++%$_columnCount==0): ?>
<ul class="products-grid">
<?php endif ?>
<li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">
<a href="http://zjp2230987.blog.163.com/blog/<?php echo
$_product->getProductUrl() ?>" title="<?php echo
$this->stripTags($this->getImageLabel($_product, 'small_image'),
null, true) ?>" class="product-image"><img src="http://zjp2230987.blog.163.com/blog/<?php echo
$this->helper('catalog/image')->init($_product,
'small_image')->resize(135); ?>" width="135" height="135"
alt="<?php echo
$this->stripTags($this->getImageLabel($_product, 'small_image'),
null, true) ?>" /></a>
<h2
class="product-name"><a href="http://zjp2230987.blog.163.com/blog/<?php echo
$_product->getProductUrl() ?>" title="<?php echo
$this->stripTags($_product->getName(), null, true)
?>"><?php echo $_helper->productAttribute($_product,
$_product->getName(), 'name') ?></a></h2>
<?php if($_product->getRatingSummary()): ?>
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
<?php endif; ?>
<!-- junpeng add start -->
<?php if(Mage::getSingleton('customer/session')->isLoggedIn()):?>
<?php echo $this->getPriceHtml($_product, true) ?>
<?php endif; ?>
<!-- junpeng add end -->
<div class="actions">
<!-- junpeng add start -->
<?php if(Mage::getSingleton('customer/session')->isLoggedIn()):?>
<?php if($_product->isSaleable()): ?>
<?php if(!$_product->isGrouped()): ?>
<input type="hidden" name="products[]" value="<?php echo $_product->getId()?>" />
<label for="qty<?php echo
$_product->getId()?>"><?php echo $this->__('Qty')
?>:</label>
<input
type="text" name="qty<?php echo $_product->getId()?>"
id="qty<?php echo $_product->getId()?>" maxlength="12"
value="<?php echo
($this->getMinimalQty($_product)?$this->getMinimalQty($_product):0)
?>" class="input-text qty" />
<?php endif; ?>
<?php else: ?>
<p class="availability out-of-stock"><span><?php echo
$this->__('Out of stock') ?></span></p>
<?php endif; ?>
<?php else: ?>
<p><a href="http://zjp2230987.blog.163.com/blog/<?php echo
Mage::helper('customer')->getLoginUrl(); ?>"><?php echo
$this->__('Login to view pricing') ?></a></p>
<?php endif; ?>
<!-- junpeng add end -->
<ul class="add-to-links">
<?php if ($this->helper('wishlist')->isAllow()) : ?>
<li><a href="http://zjp2230987.blog.163.com/blog/<?php echo
$this->helper('wishlist')->getAddUrl($_product) ?>"
class="link-wishlist"><?php echo $this->__('Add to Wishlist')
?></a></li>
<?php endif; ?>
<?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?>
<li><span class="separator">|</span> <a
href="http://zjp2230987.blog.163.com/blog/<?php echo $_compareUrl ?>" class="link-compare"><?php
echo $this->__('Add to Compare') ?></a></li>
<?php endif; ?>
</ul>
</div>
</li>
<?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
</ul>
<?php endif ?>
<?php endforeach ?>
<script
type="text/javascript">decorateGeneric($$('ul.products-grid'),
['odd','even','first','last'])</script>
<?php endif; ?>
<div class="toolbar-bottom">
<!-- junpeng add start -->
<?php if(Mage::getSingleton('customer/session')->isLoggedIn()):?>
<div style="text-align:center;">
<button class="button btn-cart" type="button"
onclick="productAddToCartForm.submit()"><span><span><?php
echo $this->__('Add to Cart')
?></span></span></button>
</div>
<br>
</form>
<?php endif; ?>
<!-- junpeng end start -->
<?php echo $this->getToolbarHtml() ?>
</div>
</div>
<?php endif; ?>
Step 2
app\code\local\Perpetual\MultiAdd\controllers\Checkout\CartController.php
<?php
require_once('Mage/Checkout/controllers/CartController.php');
class Perpetual_MultiAdd_Checkout_CartController extends Mage_Checkout_CartController
{
public function addmultipleAction()
{
$productIds = $this->getRequest()->getParam('products');
if (!is_array($productIds)) {
$this->_goBack();
return;
}
foreach( $productIds as $productId) {
try {
$qty = $this->getRequest()->getParam('qty' . $productId, 0);
if ($qty <= 0) continue; // nothing to add
$cart = $this->_getCart();
$product = Mage::getModel('catalog/product')
->setStoreId(Mage::app()->getStore()->getId())
->load($productId)
->setConfiguredAttributes($this->getRequest()->getParam('super_attribute'))
->setGroupedProducts($this->getRequest()->getParam('super_group', array()));
$eventArgs = array(
'product' => $product,
'qty' => $qty,
'request' => $this->getRequest(),
'response' => $this->getResponse(),
);
Mage::dispatchEvent('checkout_cart_before_add', $eventArgs);
$cart = Mage::getModel('checkout/cart')->init();
$cart->addProduct($product, $qty);
Mage::dispatchEvent('checkout_cart_after_add', $eventArgs);
$cart->save();
Mage::dispatchEvent('checkout_cart_add_product', array('product'=>$product));
$message = $this->__('%s was successfully added to your shopping cart.', $product->getName());
Mage::getSingleton('checkout/session')->addSuccess($message);
}
catch (Mage_Core_Exception $e) {
if (Mage::getSingleton('checkout/session')->getUseNotice(true)) {
Mage::getSingleton('checkout/session')->addNotice($product->getName() . ': ' . $e->getMessage());
}
else {
Mage::getSingleton('checkout/session')->addError($product->getName() . ': ' . $e->getMessage());
}
}
catch (Exception $e) {
Mage::getSingleton('checkout/session')->addException($e, $this->__('Can not add item to shopping cart'));
}
}
$this->_goBack();
}
}
?>
Step 3
app\code\local\Perpetual\MultiAdd\etc\config.xml
<?xml version="1.0"?>
<config>
<modules>
<Perpetual_MultiAdd>
<version>0.1.0</version>
</Perpetual_MultiAdd>
</modules>
<global>
<rewrite>
<perpetual_multiadd_checkout_cart>
<from><![CDATA[#^/checkout/cart/addmultiple/.*$#]]></from>
<to>/multiadd/checkout_cart/addmultiple/</to>
</perpetual_multiadd_checkout_cart>
</rewrite>
<helpers>
<multiadd>
<class>Perpetual_MultiAdd_Helper</class>
</multiadd>
</helpers>
</global>
<frontend>
<routers>
<perpetual_multiadd>
<use>standard</use>
<args>
<module>Perpetual_MultiAdd</module>
<frontName>multiadd</frontName>
</args>
</perpetual_multiadd>
</routers>
</frontend>
</config>
Step 4
app\code\local\Perpetual\MultiAdd\Helper\Cart.php
<?php
class Perpetual_MultiAdd_Helper_Cart extends Mage_Core_Helper_Url
{
/**
* Return url to add multiple items to the cart
* @return url
*/
public function getAddToCartUrl()
{
if ($currentCategory = Mage::registry('current_category')) {
$continueShoppingUrl = $currentCategory->getUrl();
} else {
$continueShoppingUrl = $this->_getUrl('*/*/*', array('_current'=>true));
}
$params = array(
Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED =>
Mage::helper('core')->urlEncode($continueShoppingUrl)
);
if ($this->_getRequest()->getModuleName() == 'checkout'
&& $this->_getRequest()->getControllerName() == 'cart') {
$params['in_cart'] = 1;
}
return $this->_getUrl('checkout/cart/addmultiple', $params);
}
}
?>
Step 5
app\etc\modules\Perpetual_MultiAdd.xml
<?xml version="1.0"?>
<config>
<modules>
<Perpetual_MultiAdd>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</Perpetual_MultiAdd>
</modules>
</config>
magento添加多个产品到购物车(Add multiple products to cart )的更多相关文章
- 解决magento添加产品在前台不显示问题
有时候我们在magento系统添加产品,前台不显示,最模板分析可能 以下几个原因: 1 添加新品要重新index一下,magento是静态的.html页面,不reindex不出来的.在System→I ...
- magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
添加新产品时状态默认为激活 打开文件/app/code/core/Mage/Catalog/Model/Product/Status.php,注释掉“Please Select” /** * Retr ...
- magento购物车添加减少数量 实时更新购物车
magento实时更新购物车商品数量 <td> <button onclick="addQtyone();" type="submit"> ...
- Magento添加一个下拉登陆菜单Create Magento Dropdown Login in a few minutes
Dropdown login forms are not a feature many online stores use, but in some cases they could be quite ...
- magento添加分类属性
在magento中给产品添加自定义属性是很容易实现在后台就可以很轻易添加,但是给分类就不行了,magento本身没有提供给category添加自定义属性.在实际的运用过程中我们想给cagegory添加 ...
- magento批量上传产品
Step1:表格仔细检查无误后,将准备好的图片上传至 media/import中.如果使用专用的图片服务器,把图片上传到服务器上,当然表格中的图片地址要做相应的修改. Step2:然后,登陆Magen ...
- magento中如何实现产品图片放大效果
Magento列表页用jQuery实现产品图片放大效果今天看到个网站,鼠标移到列表页的产品图片上,旁边会弹出一个大图,感觉不错,就自己在Magento里写了个.先看看效果 这个效果比较好实现,打开li ...
- Magento后台订单显示产品图片的修改方法
Magento后台订单原来是没有显示产品图片,客服业务还得到网站前台查找这个产品的图片提供给发货部,这样是很不方便的.为提高工作效率,应客服业务要求,现对Magento后台订单进行修改,使订单页面就显 ...
- magento -- 添加中国省份列表
magento本身的数据库里不包含中国的省份信息,你可以执行以下的SQL语句来添加 添加到directory_country_region表 INSERT INTO `directory_count ...
随机推荐
- cisco 路由配置
Cisco路由配置基础 刚刚接触cisco路由配置,下面是学习的笔记,感觉命令还是多敲才能熟悉 一. 所处状态各类 router> 用户处于用户命令状态,可以查看网络和主机 router# 用户 ...
- java 面向对象编程 第20章 XML技术解析
1. XML:extended Markup Language 可扩展标记语言,利用标签和子标签方式描述数据. 2. 声明<?xml version=”1.0”?>版本号 注释< ...
- 内工大acm校赛--整理代码
题目:小明搜到一行无缩进无换行代码,请帮小明整理代码.无for语句和case语句,而且只有一个主函数.你只要控制注意“:”“{”“}”这三个符号带来的缩进和换行效果就行. Input: 输入只有一行, ...
- Service相关--读书笔记
2013-12-30 18:16:11 1. Service和Activty都是从Context里面派生出来的,因此都可以直接调用getResource(),getContentResolver()等 ...
- 近期C++编译问题汇总
编译c++ 代码中遇到几个问题,汇总一下: 1.编译openssl 遇到问题如图 , 原因:不支持汇编编译,在perl编译指令中加入: no-asm , 如:perl Configure VC-WI ...
- C++-多重继承的注意点
1, 钻石型多重继承如果不想要底部的类有重复的变量,则需要声明为virtual继承 class File{...}; class InputFile: virtual public File{..}; ...
- 如何在Linux上通过grub添加内核参数
转自Linux中国 我们可以在linux内核启动时为其提供各种各样的参数.这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息.内核参数应在内核启动时通过引导装载程序,如GRUB或LILO ...
- (kate)win8-64位系统下opencv-2.4.3的安装以及在visual_studio2010中配置
环境: 操作系统:window8.1 64bit Opencv版本:OPencv-2.4.3 VS版本:vs 2010 一.安装Opencv 1.Opencv官网http://opencv.org/ ...
- [安卓][转]Android eclipse中程序调试
一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...
- ssm开发的一点小技巧
一般使用反转工作生成基础bean如Items然后我们使用的实体类一般是基础bean的拓展类ItemsCustomer,继承自基础类,这个是为了方便对于表字段的更改生成的bean影响减低我们查询一般是使 ...