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

Ben*_*gan 5 javascript jquery checkout magento

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

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

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

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

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

Ben*_*gan 0

这里的解决方案是

  1. 更正 onepage.phtml 中的两个错误的类引用,以及
  2. 重命名一些 css 类以匹配库存的 magento 结帐代码所需的内容。

所需的具体 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>
Run Code Online (Sandbox Code Playgroud)

下面是一个将我现有的 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; }
Run Code Online (Sandbox Code Playgroud)

我称这个为“盒子”,但就 Magento 而言,它需要是“步骤”。由于您的 css 类可能不同,因此您需要复制

我希望这可以帮助别人。

顺便说一下,我是这样想出来的:

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

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