我一直在尝试在一页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”跨度仍然存在 - 空白
答案 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"
即可。