5

1 ページのチェックアウトは、約 1 週間前には正常に機能していましたが、現在は機能していません。管理者のバックエンドに関連する問題がまだ残っていたため、間違いなく私に問題がありました。おそらく、それに取り組んでいる過程で何らかの形でこれを汚したのでしょう。

いずれにせよ、(ログインして登録済みの) ユーザーが 1 ページのチェックアウトの請求情報ステップで [続行] ボタンをクリックすると、ボタンがクリックされなかったかのようになります。次のステップに進みません。また、エラー コンソール (Firefox の場合) は "TypeError: checkout is undefined" を報告し、opcheckout.js の 303 行目を表示します。

この問題は、SO に投稿された別の問題と非常によく似ていますが、(a) 実際には回答がなく、(b) コメントする (または質問に追加する) のに十分なスコアがありません。

解決策は素晴らしいものですが、私はこれを自分でデバッグする方法を実際に学ぼうとしています. グーグルで見つけた多くのmagentoソリューションを(他の問題のために)すでに適用していますが、それらは機能し、それが主なことですが、自分の問題を解決できるようになりたいと思っています。そして、最終的には他の人を助けることさえできるかもしれません...

したがって、この場合、「未定義のチェックアウト」を考えると、定義されるべき場所をどのように見つけることができますか?

4

2 に答える 2

2

私の場合、/skin/frontend/base/default/js/opcheckout.jsファイルは/skin/frontend/[yourpackage]/[yourtheme]/js/opcheckout.jspspahn が提案したものと一致しませんでした。私のテーマの .js ファイルは完全に空白でした。内容をコピーすると、すべてが修正されました。検索している可能性のある他のユーザーの可視性のために、ここにコメントしてください。

于 2015-02-03T18:14:56.697 に答える
0

ここでの解決策は、

  1. onepage.phtml の 2 つの不適切なクラス参照を修正し、
  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>

これは、既存の css クラスの 1 つを新しい必要なクラスの 1 つに (box.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 という 1 つのファイルに絞り込み、よく調べて在庫と比較します。
  5. テーマにない CSS クラス名が見つかりました
  6. それらを追加してデバッグする

これは長くて面倒ですが、うまくいくようです。

于 2013-02-27T21:00:27.120 に答える