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

时间:2013-02-26 21:02:59

标签: javascript jquery magento checkout

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

这里的解决方案是

  1. 在onepage.phtml和
  2. 中更正两个错误的类引用
  3. 重命名一些css类以匹配stock magento checkout代码所需的内容。
  4. 所需的具体css类是:

    • 步骤-标题
    • 步骤

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

    <ol id="checkoutSteps" class="one-page-checkout">`<?php $i=0; foreach($this->getSteps() as $_stepId => $_stepInfo): ?>
    <?php if (!$this->getChild($_stepId) || !$this->getChild($_stepId)->isShow()): continue; endif; $i++ ?>
        <li id="opc-<?php echo $_stepId ?>" class="section <?php echo !empty($_stepInfo['allow'])?'allow':'' ?> <?php echo !empty($_stepInfo['complete'])?'saved':'' ?>">
            <div class="step-title">
                <h3><span class="step-count"><?php echo $i ?></span> &nbsp;<?php echo $_stepInfo['label'] ?></h3><a href="#"><?php echo $this->__('Edit') ?></a>
            </div>
            <div id="checkout-step-<?php echo $_stepId ?>" class="step <?php if($_stepId=='shipping_method'): ?>-no-padding<?php endif; ?> a-item"  style="display:none;">
                <?php echo $this->getChildHtml($_stepId) ?>
            </div>
        </li>
    <?php endforeach ?>
    </ol>
    

    这是一个将我的现有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. 添加它们,调试
    7. 这是漫长而乏味的,但似乎有效。