在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 中的简单应用程序,用户在文本框中输入金额并单击使用贝宝结帐