2014-07-09 101 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

相關問題