2014-07-09 99 views
3

我在我的产品页面上有两个“添加到购物车”按钮。Magento添加到购物车并重定向到结帐(产品页:在“结帐”按钮,“添加到购物车”重定向到购物车)

第一个默认功能是“添加到购物车”,它的功能应该如此,将产品添加到购物车并重定向到购物车。

第二个标签为“Checkout”,我希望将产品添加到购物车,并重定向到结帐而不是购物车。 (但只有当点击Checkout按钮时)。

我看过了,它好像可以使用Observer吗?我不知道如何实现这一点,或者区分哪个按钮被点击,或者指向Checkout按钮的URL。

回答

3

创建函数addActioncartController.phpapp/code/core/checkout/controllers/)到myaddAction()的副本。

下面添加结束view.phtml (app/design/frontend/your package/your template/template/catalog/product/view.phtml)

<script type="text/javascript"> 
    //<![CDATA[ 
productAddToCartForm.submit = function(button, url){ 

replaceURL = url.replace("add/","myadd/"); 
      if(this.validator) { 
       var nv = Validation.methods; 
       delete Validation.methods['required-entry']; 
       delete Validation.methods['validate-one-required']; 
       delete Validation.methods['validate-one-required-by-name']; 
       // Remove custom datetime validators 
       for (var methodName in Validation.methods) { 
        if (methodName.match(/^validate-datetime-.*/i)) { 
         delete Validation.methods[methodName]; 
        } 
       } 

       if (this.validator.validate()) { 
        if (url) { 
         this.form.action = replaceURL; 
        } 
        this.form.submit(); 
       } 
       Object.extend(Validation.methods, nv); 
      } 
     }.bind(productAddToCartForm); 
     //]]> 
    </script> 

添加结账按钮addtocart.phhtml (app/design/frontend/your package/your template/template/catalog/product/view

<button type="button" title="<?php echo $buttonTitle ?>" class="button btn-cart" onclick="productAddToCartForm.submitmy(this)"><span><span><?php echo "Checkout"; ?></span></span></button> 

正如我告诉你复制的addAction到mycartAction 变化

$this->_goBack(); 

$this->_redirect('checkout/onepage'); 
     return; 

endof

if (!$cart->getQuote()->getHasError()){ 
        $message = $this->__('%s was added to your shopping cart.', Mage::helper('core')->escapeHtml($product->getName())); 
        $this->_getSession()->addSuccess($message); 
       } 

添加

+0

感谢

Checkout按钮。这是一个很好的解决方案。我想让它在自定义控制器中运行,这正是我认为你现在所建议的,但我只是添加了一些类似的逻辑到默认的addAction。如果他们点击我的结账按钮,我只是传递了一个附加参数,如果设置了附加参数,它会重定向到“checkout/onepage”。但是我只是把它添加到了核心中,我不喜欢这样做,但是我无法将它加入到模块中。是否有一个单独的控制器比其他参数更好?我想如果它在本地代码池,这将是有意义的 – RattanOutdoorFurnitureDev

3

我想你可以使用jQuery这一点。在list.phtml

<button type="button" title="<?php echo $this->__('Check out') ?>" class="button btn-cart" onclick="setcheckoutLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button> 

而这个脚本添加到同一list.phtml文件

<script> 
function setcheckoutLocation(location) 
{ 
jQuery.ajax({ 
        type:"GET", 
        url:location, 
        success:function(data){ 
         window.location.href = "http://your-checkout-page-url"; 
        } 
       }); 

} 
</script> 
+0

我的产品有其他自定义属性(颜色选项)。所以我不确定这是如何形成一个服务器端定义的url。但我希望我能通过redirect_url作为结账页面。但那不起作用。在核心cartController中编辑附加参数,工作。虽然我想从核心中抽象出来。 – RattanOutdoorFurnitureDev

+0

像这个jQuery一样,它不需要修改核心文件。 – Sunry

+0

@aziz:我做了粘贴脚本,我可以粘贴按钮,我该如何运行? – Rathinam

相关问题