Magento – onePageCheckout bleibt nach Update auf 1.7.0.2 hängen

Nach einigen Stunden wühlen in den Untiefen der wildesten Magento Blogs und Magento Connect Boards [kaum zu glauben, was dort alles an Unsinn zu finden ist..] wird einem klar, was Magento im Checkout Process zwischen Eingabe der Rechnungs-/Lieferdaten und Versandartauswahl hängen läßt.

Mit was es zu tun hat:

mxperts no_regions – Bundeslandauswahl in den Staaten – Update auf 1.7.0.2 – onepage.phtml – Ja, in der EU macht die Auswahl des Bundeslandes keinen Sinn – ein kleines JavaScript Object das den Supergau fixed!

.. wie immer bei Magento ist meist nur eine Zeile dafür verantwortlich, dass man  stundenlang im Dunkeln zwischen Blocks, Zend und RavioliCode rumstochert!

Fehlersuche:

Nachdem man zwischendurch mal die Konsole der DeveloperTools checkt, stellt man fest, dass sich der Browser über ein nicht vorhandenes Object „countryRegions“ ausgesprochen freuen würde..  Damit würde sich dann toll das CheckOutAccordion auf den nächsten CheckOutStep weitertun – ohne dem aktiviert sich zwar nach Klick auf „Fortfahren“ das nächste DIV-Element des Versandartenreiters, öffnen tut es sich aber leider nur nach Klick darauf.

How to fix it?

OK – warum ist nach Update plötzlich was weg, was vor dem Update noch da war? Genau, weil die Jungs von Varien davon ausgehen, dass man auf der ganzen Welt verschiedene TaxRates für unterschiedliche Bundesstaaten braucht. Was die Jungs nicht wissen konnten: Wir in nicht US, also EU, nutzen dann bspw. mxperts no_region um aus dem CheckOutBlock störende Elemente wieder raus zu operieren.
Gut, was nicht mehr da is muss also wieder rein!

Also debug anschmeissen und nach Pfadhinweisen und Blocknamen kucken:
Folgenden codeSnip also in frontend/base/default/template/checkout/onepage.phtml einfügen – damit erledigt sich der leidige javaScript_error > „countryRegions is not defined“, der dafür verantwortlich war, dass der onePageCheckout sich mit der Bundeslandsache verhaspelt und nicht zur Versandart hoppt:

<script type="text/javascript"> countryRegions = <?php echo $this->helper('directory')->getRegionJson() ?></script>

Reingebaut gehört es hier:

<script type="text/javascript" src="<?php echo $this->getJsUrl('varien/accordion.js') ?>"></script>
<script type="text/javascript" src="<?php echo $this->getSkinUrl('js/opcheckout.js') ?>"></script>
<script type="text/javascript"> countryRegions = <?php echo $this->helper('directory')->getRegionJson() ?></script>
<ol class="opc" id="checkoutSteps">

Soweit, jetzt gut..
core.c3labs

Autor: core

core : Jürgen Graf ist 'Senior Directive Creator' from the Creators of 'Whow', 'Digital Creative' mit mehr als 25 Jahren medial interaktiver Erfahrung - Seine erste Freundin nannte sich 'ZX81' und beherrschte 2 Farben!