2012-02-07 76 views
0

贝宝不会在iframe中打开,所以我试图使用Paypal按钮结帐时使用Magento 1.4+在新窗口或选项卡中打开贝宝,在magento中点击“使用paypal结帐”打开新窗口

我想我在某处添加了一个target =“_ blank”,但我不知道在哪里。

有文件在\程序\代码\核心\法师负载\宝\但我不知道是哪个编辑,ADN宁愿做没有用的核心文件

我发现这对PayPal快速在app \ code \ core \ Mage \ Paypal \ Block \ Express \ Shortcut.php

protected $_startAction = 'paypal/express/start'; 

我该如何在新窗口中打开?

+0

这是一个好主意,因为当贝宝重定向回到您的网站,您将有两个运行实例,这对客户体验来说并不理想。 – ShaunOReilly 2012-02-08 01:58:35

+0

贝宝没有在iframe中打开也不是客户体验的理想选择。我的意思是使用贝宝在所有不是理想的,但它似乎如果你想使用贝宝的PayPal按钮表达从一个iframe,打开一个新的窗口是方式。如果你有另一种方法让贝宝工作,我会很高兴吗? – Jon 2012-02-08 15:38:24

+0

我们在不使用iframe的情况下使用它,但我们只是告诉他们(尚未使用它的5位客户)他们将被重定向到paypal,然后返回。与Google结帐相同。如果弹出窗口被阻止,那么如果尝试新窗口,则可能会有非工作系统。 – ShaunOReilly 2012-02-08 20:14:06

回答

0

感谢保罗 - 我这样做,而不是相同的文件和它的工作!

变化(我行33)

<a id="<?php echo $shortcutHtmlId ?>" href="<?php echo $this->getCheckoutUrl()?>"> 

<a id="<?php echo $shortcutHtmlId ?>" href="<?php echo $this->getCheckoutUrl()?>" target="_blank"> 

容易,但不会做它没有保罗的帮助

1

要自己解决这个问题,我们首先需要知道如何在网站上呈现按钮。

我们首先需要知道使用了哪个模板,如果我们确实需要深入挖掘,请找出使用哪个Block来渲染模板。

启用Template hintsAdmin > System > Configuration > Advanced > Developer > Debug或下载优秀的Advanced Template Hints Module,只需将?ath=1添加到您试图查看模板提示的URL即可。

现在,当您使用模板提示查看页面时,您应该看到使用frontend/base/default/paypal/express/shortcut.phtml呈现贝宝按钮。

打开该文件,开始浏览/yourmagentoinstallation/app/design/,您会在那里找到frontend/文件夹。

现在我们可以看到在该模板事情,我们可以看到,这个模板中添加一个<a>, <span>, <input>和一些JavaScript:

//<![CDATA[ 
    Event.observe('<?php echo $shortcutHtmlId ?>', 'click', function(event) { 
     <?php if ($this->getConfirmationUrl()): ?> 
      if (confirm('<?php echo Mage::helper('core')->jsQuoteEscape($this->getConfirmationMessage())?>')) { 
       this.href = '<?php echo $this->getConfirmationUrl() ?>'; 
      } 
     <?php endif; ?> 
     <?php if ($this->getIsInCatalogProduct()): ?> 
      $('pp_checkout_url').value = this.href; 
      productAddToCartForm.submit(this); 
      event.stop(); 
     <?php endif; ?> 
    }); 
//]]> 

这里我们设置形式的href张贴到,因为没有真正的链接,我们可以改变,我们需要设置窗体为空的目标,我们可以用JavaScript做到这一点:

地说:

productAddToCartForm.setAttribute('target', '_blank');

上图:

productAddToCartForm.submit(this);

+0

感谢提示模块的链接和很好的解释。但是在做出更改后,它仍然会在同一个窗口中打开。 1.4在productAddToCartForm.submit()中没有这个。我不知道这是否会导致差异? <?php if($ this-> getIsInCatalogProduct()):?> $('pp_checkout_url')。value = this.href; productAddToCartForm.submit(); event.stop(); <?php endif; ?> – Jon 2012-02-08 15:57:32