magento产品成功添加到购物车后跳转到不同页面 添加 add to cart 按钮
1 添加产品到购物车成功后是跳转到购物车页面或不跳转。这个在后台可以设置
system -》 configuration -》 After Adding a Product Redirect to
Shopping Cart – Yes/No”
这个是设置成功添加产品后是跳转到购物车页面,还是不跳转
2 修改默认的跳转页面
可以在app\design\frontend\default\theme173\template\catalog\product\view.phtml
<input type="hidden" name="return_url"
value="yoururl" />
将url替换成要跳转的页面的url就可以了。
3 添加一个add to cart的按钮
两个按钮可以一个自动跳转到购物车页面,一个不跳转,中文网站中,一般有一个立即购买(跳转到购物车页面),一个添加到购物车(不跳转停留在原来页面)。
解决这个的办法就是重写控制器Checkout-CartController
1)创建模块目录和文件
- Magento/app/code/local/MyNameSpace/MyCheckout/etc/config.xml
- Magento/app/code/local/MyNameSpace/MyCheckout/controllers/CartController.php
- Magento/app/etc/modules/MyNameSpace_MyCheckout.xml
2)编辑Magento/app/code/local/MyNameSpace/MyCheckout/etc/config.xml
<?xml version="1.0"?><config> <modules> <MyNameSpace_Mycheckout> <version>0.1.0</version> </MyNameSpace_Mycheckout> </modules> <frontend> <routers> <MyNameSpace_Mycheckout> <use>standard</use> <args> <module>MyNameSpace_Mycheckout</module> <frontName>mycheckout</frontName> </args> </MyNameSpace_Mycheckout> </routers> </frontend> <global> <routers> <checkout> <rewrite> <cart> <to>mycheckout/cart</to> <override_actions>true</override_actions> <actions> <add> <to>mycheckout/cart/add</to> </add> </actions> </cart> </rewrite> </checkout> </routers> </global></config>
3)编辑
/controllers/CartController.phpMagento/app/code/local/MyNameSpace/MyCheckout/controllers/CartController.php
<?phprequire_once 'Mage/Checkout/controllers/CartController.php';class MyNameSpace_Mycheckout_CartControllerextends Mage_Checkout_CartController{ publicfunction addAction() { $cart = $this->_getCart(); $params= $this->getRequest()->getParams(); try{ if(isset($params['qty'])) { $filter= new Zend_Filter_LocalizedToNormalized( array('locale'=>
Mage::app()->getLocale()->getLocaleCode()) ); $params['qty']
= $filter->filter($params['qty']); } $product= $this->_initProduct(); $related= $this->getRequest()->getParam('related_product'); if(!$product)
{ $this->_goBack(); return; } $cart->addProduct($product,$params); if(!empty($related))
{ $cart->addProductsByIds(explode(',',$related)); } $cart->save(); $this->_getSession()->setCartWasUpdated(true); Mage::dispatchEvent('checkout_cart_add_product_complete', array('product'=> $product,'request' => $this->getRequest(), 'response' => $this->getResponse()) ); if(!$this->_getSession()->getNoCartRedirect(true))
{ if(!$cart->getQuote()->getHasError()){ $message= $this->__('%s
was added to your shopping cart.',
Mage::helper('core')->htmlEscape($product->getName())); $this->_getSession()->addSuccess($message); } if($returnUrl =$this->getRequest()->getParam('return_url'))
{ //
clear layout messages in case of external url redirect if($this->_isUrlInternal($returnUrl))
{ $this->_getSession()->getMessages(true); } $this->getResponse()->setRedirect($returnUrl); }elseif (!Mage::getStoreConfig('checkout/cart/redirect_to_cart') &&
!$this->getRequest()->getParam('in_cart') &&$backUrl = $this->_getRefererUrl()) { $this->getResponse()->setRedirect($backUrl); }else { if(($this->getRequest()->getActionName()
== 'add') &&
!$this->getRequest()->getParam('in_cart'))
{ $this->_getSession()->setContinueShoppingUrl($this->_getRefererUrl()); } if($this->getRequest()->getParam('noCheckoutYet')=="yes") $this->getResponse()->setRedirect($this->_getRefererUrl()); else $this->_redirect('checkout/cart'); } } } catch(Mage_Core_Exception $e) { if($this->_getSession()->getUseNotice(true))
{ $this->_getSession()->addNotice($e->getMessage()); }else { $messages= array_unique(explode("\n",$e->getMessage())); foreach($messages as$message)
{ $this->_getSession()->addError($message); } } $url= $this->_getSession()->getRedirectUrl(true); if($url) { $this->getResponse()->setRedirect($url); }else { $this->_redirectReferer(Mage::helper('checkout/cart')->getCartUrl()); } } catch(Exception $e) { $this->_getSession()->addException($e,$this->__('Cannot add the item to shopping
cart.')); $this->_goBack(); } }}
4)编辑文件
Magento/app/etc/modules/MyNameSpace_MyCheckout.xml
<?xml version="1.0"?><config> <modules> <MyNameSpace_Mycheckout> <active>true</active> <codePool>local</codePool> </MyNameSpace_Mycheckout> </modules></config>
5)编辑文件
Magento/app/design/frontend/[myinterface]/[mytheme]/layout/checkout.xml
<camelweb_mycheckout_cart_index> <updatehandle="checkout_cart_index"/></camelweb_mycheckout_cart_index>
6)
在模版文件中添加 “Add to cart”按钮view/addtocart.phtml
<?php $_product =$this->getProduct()
?><?php if($_product->isSaleable()):
?> <divclass="add-to-cart"> <?phpif(!$_product->isGrouped()):
?> <labelfor="qty"><?phpecho $this->__('Qty:')
?></label> <input
type="text" name="qty"id="qty" maxlength="12"value="<?php echo
$this->getMinimalQty($_product)
?>" title="<?php echo
$this->__('Qty') ?>"class="input-text
qty" /> <?phpendif;
?> <button
type="button" title="<?php echo
$this->__('Add to Cart') ?>"class="button
btn-cart" onclick="productAddToCartForm.submit()"><span><span><?phpecho $this->__('Add to Cart')
?></span></span></button> <br
/>
<!--自定义添加的add
to cart的按钮--> <a
href="<?php echo
Mage::getUrl('checkout/cart/add', array('product' =>
$_product->getId(),
'noCheckoutYet'=>'yes'))
?>">Add to cart
2</a> <?phpecho $this->getChildHtml('', true, true)
?> </div><?php endif;
?>7)清下缓存,然后后台设置下跳转或不跳转,或者根据本文的第二方法,添加下代码,让默认的不跳转,我们重新添加的add to cart
按钮不跳转
magento产品成功添加到购物车后跳转到不同页面 添加 add to cart 按钮的更多相关文章
- 关于WordPress登录后跳转到指定页面
前面在写模版的时候,有朋友要求网站登录后要跳转的到指定的页面.这个从前还真没遇到过.于是就用万能的搜索(很少百度)找了下,方法基本上就是一个,代码如下: <?php // Fields f ...
- shiro控制登陆成功后跳回之前的页面
登陆之后跳回之前的页面是在做登陆注册模块时遇到的一个需求,也是很有必要的.若用户直接访问登陆页面,那可以控制它直接到首页,但是要用户没有登陆直接访问自己的购物车等需要经过身份认证的页面,或者因为ses ...
- web.config中配置页面出错后跳转指定错误页面
每当用户访问错误页面时,会出现不友好的404错误,所以为了防止这种不友好,我们在web.config中的<system.web>节点下配置 <customErrors>,在出现 ...
- layui弹窗里面 session过期 后跳转到登录页面
1.在登录页面添加 <script> $(function () { if (top != window) { layer.msg("登录失效", {icon: 5}) ...
- MVC 访问IFrame页面Session过期后跳转到登录页面
Web端开发时,用户登录后往往会通过Session来保存用户信息,Session存放在服务器,当用户长时间不操作的时候,我们会希望服务器保存的Session过期,这个时候,因为Session中的用户信 ...
- php弹窗后跳入另一个页面
之前写项目时,在跳转页面前加入一个弹窗,发现弹窗没有弹出来就直接跳转了,之前使用的header跳转发现不行,换成location.href也不行,后来再location.href前加入一个parent ...
- 编写Servlet,验证用户登录,如果用户名与密码都为“admin”则验证通过,跳转欢迎页面,否则弹出提示信息“用户名或密码错误,请重新输入!”,点击“确定”后跳转至登录页面
java代码:(Test1) package com.test; import java.io.IOException; import java.io.PrintWriter; import java ...
- C#-WebForm-点击网页中的按钮后跳转到其他页面是怎么实现的?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- session失效后跳转到登陆页面
一.编写Filter拦截器类 package com.pv.utils; import java.io.IOException; import java.io.PrintWriter; import ...
随机推荐
- 一些Shell命令
lsof -nP -itcp:8080 查看本机8080端口在被什么应用占用,可以查看此应用对应的pid. netstat -ant|grep 8081 查看本机8081端口的使用情况. telnet ...
- [转]使用Java Mission Control进行内存分配分析
jdk7u40自带了一个非常好用的工具,就是Java Mission Control.JRockit Misson Control用户应该会对mission control的很多功能十分熟悉,JRoc ...
- 【转】数据库范式(1NF 2NF 3NF BCNF)详解二
以下内容转自:http://jacki6.iteye.com/blog/774889 -------------------------分割线----------------------------- ...
- CentOS 下的MySQL配置
先贴出代码(/etc/my.cnf)如下: #The following options will be passed to all MySQL clients [client] #password ...
- SendMessage函数的常用消息及其应用大全
来源:http://www.360doc.com/content/09/0814/10/19147_4907488.shtml,非常全面的解释. 文本框控件通常用于输入和编辑文字.它属于标准 Wind ...
- 有关C#中使用if else和try catch的问题及效率问题
本来if esle 是流程控制 try catch是异常处理,本身其实是没有可比性的,但是开发过程中有的人很容易混用,而且两者有的时候效果似乎一样,所以我还是用了个简单的测试来简单的比较下. 不多说, ...
- InitializeComponent System.StackOverflowException
因为一直重复调用了InitializeComponent,WPF报System.StackOverflowException错误,提示死循环似的调用.经过一阵排查得出下面结论: 避免在隐藏代码中使用O ...
- C#点击按钮用DataGridView动态增加行、删除行,增加按钮列
原来有一行: 点击添加,在下面增加同样的一行 新增加的行有一列删除按钮,点击某行的删除按钮时,删除当前行 方法: 哈哈,我果然好聪明啊 1.文本框.文本框.添加按钮 2.一个DataGridView( ...
- Ubuntu14.04安装和配置ROS Indigo(一)
安装ROS 配置Ubuntu的软件源 配置Ubuntu要求允许接受restricted.universe和multiverse的软件源,可以根据下面的链接配置: https://help.ubuntu ...
- UITableViewStyleGrouped 模式下 headview 多出一块高度问题
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView ...