1

我一直在尝试在一页 Magento 结帐的边缘添加 SSL 签名机构提供的一串 javscript 代码。在结帐的第一步之后,Magento 中的某些东西似乎正在剥离 javascript 代码,但我找不到有问题的代码。其他人注意到这个问题或解决方案吗?

我在 \app\design\frontend\default\myTheme\template\checkout\onepage\progress.phtml 的底部添加了 JS 代码。

代码如下所示:

 <span id="siteseal"><script type="text/javascript" src="https://seal.godaddy.com/getSeal?sealID=xxx"></script></span>

起初我以为它是隐藏的,但徽标出现在第一步但在后续步骤中消失了,但是“siteseal”跨度仍然存在 - 空

4

1 回答 1

1

虽然进度部分的初始输出是基于 PHP 的,但 Magento会在您一步一步移动时通过 AJAX更新页面的进度部分。这由以下代码处理

#File: skin/frontend/base/default/js/opcheckout.js
reloadProgressBlock: function(toStep) {
    var updater = new Ajax.Updater('checkout-progress-wrapper', this.progressUrl, {
        method: 'get',
        onFailure: this.ajaxFailure.bind(this),
        parameters: toStep ? {toStep: toStep} : null
    });
},

如果您查看Ajax.Updater的文档,您会看到 Magento 没有传入的附加选项

evalScripts(布尔值;默认为 false):是否应评估响应文本中的元素。

这意味着当 Magento 通过 Ajax 更新页面的该部分时,不会评估脚本,这是您看到所描述行为的最可能原因。

为了解决您的问题,我会跳过将此代码添加到progress.phtml模板中,而是使用以下布局更新(在local.xml或其他地方,如果这是您的风格)

<layouts>
    <checkout_onepage_index>
        <reference name="right">
            <block type="core/text" name="my_extra_stuff" before="checkout.progress.wrapper">
                <action method="setText"><text><![CDATA[
                <span id="siteseal"><script type="text/javascript" src="https://seal.godaddy.com/getSeal?sealID=xxx"></script></span>
                ]]></text></action>
            </block>
        </reference>
    </checkout_onepage_index>
</layouts>  

如果您希望您的代码低于进度内容,只需before="checkout.progress.wrapper"从布局更新 xml 中删除。

于 2013-01-12T04:13:37.370 回答