在magento中单击“使用贝宝结帐”以打开新窗口

Posted

技术标签:

【中文标题】在magento中单击“使用贝宝结帐”以打开新窗口【英文标题】:click "checkout with paypal" in magento to open new window 【发布时间】:2012-02-28 22:57:01 【问题描述】:

Paypal 无法在 iframe 中打开,因此我尝试使用 Magento 1.4+ 在按下使用 paypal 结帐按钮时在新窗口或标签中打开 paypal

我想我在某处添加了一个 target="_blank",但我不知道在哪里。

\app\code\core\Mage\Paypal\ 中有大量文件,但我不知道要编辑哪个,adn 宁愿在不使用核心文件的情况下进行编辑

我在 app\code\core\Mage\Paypal\Block\Express\Shortcut.php 中为 paypal express 找到了这个

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

如何在新窗口中打开它?

【问题讨论】:

这是个好主意,因为当 Paypal 重定向回您的网站时,您将运行两个实例,这对于客户体验来说并不理想。 paypal 未在 iframe 中打开也不适合客户体验。我的意思是使用贝宝根本不理想,但似乎如果你想使用贝宝按钮从 iframe 中使用贝宝快递,打开一个新窗口是一种方式。如果你有另一种方式让 paypal 工作,我会很高兴吗? 我们在不使用 iframe 的情况下使用它,但我们只是告诉他们(5 个尚未使用它的客户)他们将被重定向到 paypal,然后返回。与谷歌结帐相同。如果弹出窗口被阻止,那么如果您尝试一个新窗口,那么您的系统可能无法正常工作。 我需要在 iframe 中使用它。它必须在 iframe 内。我再次需要这个,因为我使用它的功能在 iframe 中。我发现 Paypal Express 无法在 iframe 中打开。我有一个非工作系统。仅当弹出窗口被阻止时才使用非工作系统 【参考方案1】:

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

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

Admin > System > Configuration > Advanced > Developer > Debug 中启用Template hints 或下载出色的Advanced Template Hints Module 并为您尝试查看模板提示的URL 添加?ath=1

现在,当您查看带有模板提示的页面时,您应该会看到 PayPal 按钮是使用 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 to post to,因为没有真正的链接我们可以改变,我们需要将表单的目标设置为空白,我们可以用javascript做到这一点:

放:

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

以上:

productAddToCartForm.submit(this);

【讨论】:

感谢提示模块的链接和很好的解释。但进行更改后,它仍然在同一窗口中打开。 1.4 productAddToCartForm.submit()中没有这个;我不知道这是否会产生差异? getIsInCatalogProduct()): ?> $('pp_checkout_url').value = this.href; productAddToCartForm.submit();事件.stop(); 【参考方案2】:

感谢 Paul - 我对同一个文件执行了此操作,并且成功了!

更改(我的第 33 行)

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

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

很简单,但如果没有 Paul 的帮助就不会这样做

【讨论】:

以上是关于在magento中单击“使用贝宝结帐”以打开新窗口的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 中的简单应用程序,用户在文本框中输入金额并单击使用贝宝结帐

在 paypal Express 结账期间清除会话

PyQt5,单击按钮后如何打开新窗口

怎么单击一个按钮打开一个网页,我是要在新窗口中打开,不是在本窗口中打开.

xcode 在同一窗口中打开“单击此处查看符号声明”

单击时在新窗口中打印图像的最简单方法是啥?