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 ...
随机推荐
- myeclipse中java文件中文注释乱码问题
在myeclipse中,有时打开java文件会发现中文注释全为乱码了,这个问题主要是因为编码的问题没有设置好,一个重要的原则就是保证所有的编码一致才不会发生乱码 出现乱码,需要知道三个地方的编码格式: ...
- 解决extjs grid 不随窗口大小自适应的问题
解决extjs grid 不随窗口大小自适应的问题 August 30, 2010 zhai Javascript 8,403 viewsGo to comment 最近遇到的问题,在使用grid的时 ...
- K需要修改的内容
1.需要保存默认案件,所有相关的页面的Title都要显示默认按键信息. 2.播放器需要调整,左侧的是播放信息,用户选择:案件/设备/然后就把该目录下的文件都展示出来.用户选择的时候马上进行播放.右侧有 ...
- java之io之file类的常用操作
java io 中,file类是必须掌握的.它的常用api用法见实例. package com.westward.io; import java.io.File; import java.io.IOE ...
- [转]使用maven镜像
综述 用maven做项目,最郁闷的莫过于某些依赖库下载不了.被墙了,你懂的.使用maven镜像仓库及其重要,特别是国内的镜像,可以有效缓解被墙疼痛. 常用的镜像 国外镜像 ibiblio.org &l ...
- 各种常用函数 (SQL)
数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001 ...
- ROS TF——learning tf
在机器人的控制中,坐标系统是非常重要的,在ROS使用tf软件库进行坐标转换. 相关链接:http://www.ros.org/wiki/tf/Tutorials#Learning_tf 一.tf简介 ...
- 文件浏览器及数码相框 -2.3.2-freetype_arm-2
显示多行文字 两行文字左边对齐 简单使用两个循环显示两行字体 根据上一行字体的宽度来进行下一行左边的计算 #include <sys/mman.h> #include <sys/ty ...
- [转载]Android 编译环境 build/envsetup.sh分析
2013-12-23 11:28:40 转载自: http://blog.csdn.net/evilcode/article/details/7005757 请到转载地址阅读原文, 转载以备查询.
- Delphi日期时间 UNIX
Delphi日期时间,就是常见的 2014-05-02 10:37:35 --------------------------------------------------------------- ...