magento - 在 magento 中单击 "checkout with paypal"打开新窗口

标签 magento paypal magento-1.4

Paypal 不会在 iframe 中打开,所以我试图在使用 Magento 1.4+ 按下带有 paypal 按钮的结帐时在新窗口或选项卡中打开 paypal

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

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

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

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

如何在新窗口中打开它?

最佳答案

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

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

启用Template hintsAdmin > System > Configuration > Advanced > Developer > Debug或下载优秀的 Advanced Template Hints Module然后添加 ?ath=1对于您尝试查看其模板提示的 URL。

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

放:

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

以上:

productAddToCartForm.submit(this);

关于magento - 在 magento 中单击 "checkout with paypal"打开新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9177532/

相关文章:

magento - 清除缓存后,Magento 上的 503 服务暂时不可用

php - Magento - 检查特定类别是否处于事件状态

python virtualenv安装模块报错

php - Magento 网站/商店/storeview 组织

Magento 培训示例

php - 无法通过 PHP 接收 cURL 数据

使用信用卡/借记卡的 Paypal 直接定期付款无法实时使用。已为此商家禁用 DPRP。

升级后 Magento 在服务器中显示错误

Magento EAV : how to hard delete an attribute value?

Google API 默认的 Magento 订单状态