在Magento单页结帐页面添加SSL权限javascript代码

时间:2013-01-11 22:30:39

标签: javascript magento checkout

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

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

代码看起来像这样:

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

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

1 个答案:

答案 0 :(得分: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>  

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