нажмите "оформить заказ через PayPal" в magento, чтобы открыть новое окно - PullRequest
0 голосов
/ 07 февраля 2012

PayPal не открывается в iframe, поэтому я пытаюсь открыть PayPal в новом окне или вкладке при нажатии кнопки «Оформить заказ с помощью PayPal», используя Magento 1.4 +

Я предполагаю, что где-то добавляю target = "_ blank", но я не знаю, где.

В каталоге \ app \ code \ core \ Mage \ Paypal \ есть загрузка файлов, но я не знаю, что редактировать, adn предпочел бы сделать это без использования файлов ядра

Я нашел это для PayPal Express в приложении \ code \ core \ Mage \ Paypal \ Block \ Express \ Shortcut.php

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

Как бы я просто открыл это в новом окне?

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Чтобы решить этот вопрос самостоятельно, нам сначала нужно узнать, как кнопка отображается на сайте.

Сначала нам нужно узнать, какой шаблон используется, и если нам действительно нужно глубоко копать, выясните, какой блок используется для визуализации шаблона.

Включите Template hints в Admin > System > Configuration > Advanced > Developer > Debug или загрузите превосходный Расширенный модуль подсказок по шаблонам и просто добавьте ?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);

0 голосов
/ 13 февраля 2012

Спасибо, Пол. Я сделал это вместо того же файла, и это сработало!

Изменить (моя строка 33)

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

на

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

Легко, но без помощи Пола это не сделалось бы

...