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 ...
随机推荐
- java中的if-Switch选择结构
字随笔走,笔随心走,随笔,随心.纯属个人学习分析总结,如有观者还请不啬领教. 1.if选择结构 什么是if结构:if选择结构是根据判断结果再做处理的一种语法结构. 起语法是: if(判断条件){ 操作 ...
- fill_parent和wrap_content的区别
在Android布局文件中定义视图垂直或水平大小: android:layout_width和android_layout_height的属性有fill_parent.wrap_content和mat ...
- 我的R代码备份
1 #f1=scan(file="f1.txt"); 2 #f2=scan(file="f2.txt"); 3 f=scan(file="5.2_ ...
- jar转dll
IKVM http://www.cnblogs.com/luckeryin/archive/2012/03/28/2421274.html
- 伪命题:PHP识别url重写请求
手上有一个网站,然后启用了伪静态,因为一些设置上的原因,一段时间后,发现收录的都是.php的文件,而启用的伪静态地址则收录很少,在更改设置后,想尽快去掉.php的收录,然后想将.php的地址转向.ht ...
- 项目构建工具Gradle的使用入门(参考,只表明地址)
Gradle入门介绍:简介 http://blog.jobbole.com/71999/ Gradle入门介绍:第一个Java项目 http://blog.jobbole.com/72558/ Gra ...
- 获取手机通讯录放入PinnedSectionListView中,按名字首字母排序,并且实现拨打电话功能。
package com.lixu.tongxunlu; import java.util.ArrayList; import com.lixu.tongxunlu.PinnedSectionListV ...
- POJ 2528 区间染色,求染色数目,离散化
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 47905 Accepted: 13903 ...
- TopCoder SRM 583 TurnOnLamps
读错题了有没有呀,原来 lamps 是在边上的呀,当成是在点上的了,无语. 直接一个dfs 就可以 从叶子节点开始,如果有必要转换 lamp 的状态则加一个仅包含 这个 lamp 的段 然后向上扩展, ...
- Linux-VLAN
Why Vlan? VLAN是为解决以太网的广播问题和安全性而提出的一种协议,它在以太网帧的基础上增加了VLAN头,用VLAN ID把用户划分为更小的工作组,限制不同工作组间的用户二层互访,每个工作组 ...