Magento一页结帐 – 获取TypeError:checkout undefined(在opcheckout.js中)

大约一周前,一页结账工作正常,现在却没有。 毫无疑问我有错,因为我还有一个与管理员后端相关的问题,而且我可能在这个过程中以某种方式对此进行了犯规。

在任何情况下,当一个(已登录的,已注册的)用户点击一页结帐的“结算信息”步骤中的“继续”按钮时,会发生这样的情况,就好像没有点击该按钮一样。 它不会进行下一步。 错误控制台(在Firefox中)报告“TypeError:checkout is undefined”,并在opcheckout.js中显示第303行。

这个问题与SO上发布的另一个问题非常相似,但是(a)一个人没有得到真正的答案,而且(b)我没有足够高的评分来评论(或在那里添加问题)。

虽然解决方案很棒,但我也在努力学习如何自己调试。 我已经应用了许多我通过谷歌搜索找到的magento解决方案(对于其他问题),虽然它们起作用并且这是主要的,但我开始希望能够解决我自己的问题。 甚至可能最终能帮助别人……

所以,在这种情况下,鉴于“未定义结账”,我怎么能找到应该定义的位置?

在我的例子中,/ /skin/frontend/base/default/js/opcheckout.js文件与pspahn建议的/ /skin/frontend/base/default/js/opcheckout.js文件不匹配。 我主题中的.js文件完全空白。 将内容复制到固定的所有内容上。 在此处评论可能正在搜索的其他人的可见性。

这里的解决方案是

  1. 在onepage.phtml中更正两个错误的类引用,并且
  2. 重命名一些css类以匹配stock magento checkout代码所需的内容。

所需的具体css类是:

  • 步标题

以下是更正后的onepage.html文件的摘录:

 
    `getSteps() as $_stepId => $_stepInfo): ?> getChild($_stepId) || !$this->getChild($_stepId)->isShow()): continue; endif; $i++ ?>

这是一个将我现有的css类复制到一个新的必需的类(来自文件boxes.css)的示例:

 .one-page-checkout .box { border:1px solid #bbb6a5; border-top:0; padding:15px 20px; background:#faf7ee; } .one-page-checkout .step { border:1px solid #bbb6a5; border-top:0; padding:15px 20px; background:#faf7ee; } 

我称之为“盒子”,但就Magento而言,它需要“迈出一步”。 由于您的CSS课程可能不同,您需要复制

我希望这可以帮助别人。

顺便说一句,这是我如何解决这个问题:

  1. 观察我的主题问题
  2. 使用库存主题测试:确认有效
  3. 回到我的主题,并有选择地禁用文件,找出哪些有所作为,
  4. 将其缩小为一个文件:onepage.phtml,仔细检查,与库存进行比较
  5. 找到了我的主题没有的css类名
  6. 添加它们,调试

这是漫长而乏味的,但似乎有效。