2014-07-09 5 views
3

제품 페이지에 두 장의 장바구니에 담기 버튼이 있습니다.Magento 장바구니에 담기 및 결제하기 (제품 페이지 : "장바구니에 담기"는 장바구니에 담기) 장바구니에 담기

첫 번째 기본 기능은 "장바구니에 추가"입니다.이 기능은 제품을 장바구니에 추가하고 장바구니로 리디렉션해야합니다.

두 번째 줄에는 "Checkout"이라는 레이블이 붙어있어 제품을 장바구니에 추가하고 장바구니 대신 체크 아웃으로 리디렉션하고 싶습니다. (그러나 Checkout 버튼을 클릭 한 경우에만).

나는 보았고, 옵서버가 사용 된 것처럼 보인다. 이 방법을 구현하는 방법이나 클릭 한 단추를 구별하는 방법 또는 Checkout 단추를 가리키는 URL을 모르겠습니다.

답변

3

addActioncartController.php (app/code/core/checkout/controllers/) 인 사본을 myaddAction()에 작성하십시오. 난 당신이 변경을 mycartAction하는 addAction 복사 말씀으로 (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> 

추가 체크 아웃 버튼)

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

(app/design/frontend/your package/your template/template/catalog/product/view을 addtocart.phhtml하는 view.phtml

종료 아래 추가

$this->_goBack(); 

~

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

! 로베르토

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

난 당신이 이것에 대한 jQuery를 사용할 수 있다고 생각

+0

덕분에이 스크립트를 추가에

체크 아웃 버튼. 이것은 좋은 해결책입니다. 나는 그것을 사용자 정의 컨트롤러에서 실행하고 싶습니다. 지금 생각해 보면 좋겠지 만, 기본 addAction에 비슷한 로직을 추가했습니다. 체크 아웃 버튼을 클릭하면 추가 매개 변수가 전달되고 추가 매개 변수가 설정된 경우 'checkout/onepage'로 리디렉션됩니다. 하지만이 코드를 코어에 추가했는데,이 코드는 모듈로 가져올 수 없었습니다. 별도의 컨트롤러를 갖는 것이 추가 매개 변수보다 나은 방법입니까? 로컬 코드 풀에 있다면 의미가 있습니다. – RattanOutdoorFurnitureDev

3

를 추가합니다. 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을 체크 아웃 페이지로 전달할 수 있기를 바랍니다. 그러나 그것은 작동하지 않았다. core cartController에 추가 매개 변수를 편집하여 작업했습니다. 나는 그것을 핵심에서 추상화하고 싶지만. – RattanOutdoorFurnitureDev

+0

jQuery와 마찬가지로 코어 파일을 수정할 필요가 없습니다. – Sunry

+0

@aziz : 나는 붙여 넣기 스크립트를 만들었는데, 어디에서 단추를 붙여 넣을 수 있습니까? 어떻게 실행할 수 있습니까? – Rathinam

관련 문제