2013-02-26 13 views
5

Jedna strona kasy działa poprawnie około tydzień temu, a teraz jej nie. Nie mam wątpliwości, że to moja wina, ponieważ wciąż miałem problem związany z backendem administracyjnym, i prawdopodobnie skazałem go w jakiś sposób w trakcie pracy nad tym.Magento jedna strona kasy - otrzymywanie TypeError: checkout undefined (w opcheckout.js)

W każdym razie, gdy użytkownik (zalogowany, zarejestrowany) kliknie przycisk "Kontynuuj" w kroku Informacje o płatnościach na jednej stronie kasy, tak jakby przycisk nie został kliknięty. Nie przechodzi do następnego kroku. Konsola błędów (w Firefoksie) zgłasza "TypeError: checkout is undefined", i pokazuje wiersz 303 w opcheckout.js.

Ten problem jest bardzo podobny do another one posted on SO, ale (a) na który tak naprawdę nie ma odpowiedzi i (b) nie mam wystarczająco wysokiej oceny, aby skomentować (lub dodać do tego pytania).

Podczas gdy rozwiązanie byłoby wspaniałe, staram się również nauczyć sam tego debugować. Zastosowałem już wiele rozwiązań magento, które znalazłem w googlowaniu (dla innych problemów) i chociaż działają i to jest najważniejsze, zaczynam chcieć rozwiązywać własne problemy. A może być w stanie pomóc innym w końcu ...

Tak więc, w tym przypadku, biorąc pod uwagę, że "check in undefined", w jaki sposób mogę znaleźć, gdzie powinien on zostać zdefiniowany?

+0

Po przejściu do motywu domyślnego ten problem zniknął. –

+0

Ale to nie znaczy, że mój problem został rozwiązany, to tylko trochę go zawęża: jeśli używany jest pakiet podstawowy, wszystko działa. Ale oczywiście chcę, aby mój dostosowany pakiet działał (jak kiedyś). –

+0

Spróbuj zrobić diff na plikach '/ skin/frontend/base/default/js/opcheckout.js' i'/skin/frontend/[yourpackage]/[yourtheme]/js/opcheckout.js' (jeśli to drugie istnieje). – pspahn

Odpowiedz

0

Rozwiązaniem tego problemu było

  1. Prawidłowe dwie złe referencje klasy w onepage.phtml i
  2. Zmiana nazwy niektórych klas css dopasować co akcje Magento kod kasa chce.

Szczególne klasy css potrzebne były:

  • krok tytuł
  • krok
  • liczba

Oto fragment skorygowanego onepage.html pliku:

<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> 

A oto przykład kopiując jednym z moje istniejących klas css do jednego z nowych wymaganych nich (od boxes.css pliku):

.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; } 

I nazwał to „pole”, ale musi być "krokiem" w odniesieniu do Magento. Ponieważ twoje zajęcia css najprawdopodobniej były inne, musisz skopiować

Mam nadzieję, że to pomoże komuś.

Nawiasem mówiąc, tu jest jak wyobraziłem to uwagę:

  1. przestrzegać problem z moim tematem
  2. test z photography Temat: Potwierdzenie, że działa
  3. Wróć do mojego tematu, i wyłączyć pliki wybiórczo, aby dowiedzieć się, które z nich mają znaczenie,
  4. Zawęził to do jednego pliku: onepage.Phtml, zbadać ją dokładnie, porównać zaopatrzyć
  5. Znaleziono nazwy klas css że mój motyw nie mają
  6. Dodaj je, analizować

Jest to długi i żmudny, ale wydaje się działać.

2

W moim przypadku plik /skin/frontend/base/default/js/opcheckout.js nie pasował do pliku z /skin/frontend/[yourpackage]/[yourtheme]/js/opcheckout.js, zgodnie z sugestią pspahn. Plik .js w moim motywie był całkowicie pusty. Kopiowanie zawartości po naprawieniu wszystkiego. Komentowanie tutaj dla widoczności dla innych, którzy mogą szukać.

Powiązane problemy