Letzte Woche habe ich mit Magento gearbeitet und versucht, verschiedene Store-Views einzurichten. Grundsätzlich muss der Kunde für jedes Land einen individuellen Store-View mit einer anderen Basis-URL einrichten. Zum Beispiel, wenn die Basis-URL Ihres Hauptstores www.domain.com ist und Sie einen Store-View für die USA haben, wäre dessen Basis-URL www.domain.com/us/.
Alles lief gut, aber ich stieß auf ein Problem mit dem Checkout-Prozess. Wenn Sie zum US-Shop gehen, einige Produkte in den Warenkorb legen und dann versuchen, zur Kasse zu gehen, kann es sein, dass die Seite zurück zur Warenkorbseite umgeleitet wird, entweder bevor oder nachdem die Rechnungsinformationen eingegeben wurden. Wenn Sie erneut versuchen, zur Kasse zu gehen, wird der gleiche Prozess wiederholt. Tatsächlich sendet Magento die Anfrage für die Rechnungsinformationen über Ajax an den Server, und manchmal können Sie den Fehler nicht sehen. Sie können den Fehler jedoch in Ihrer Ausnahmeprotokoldatei oder im Systemprotokoll sehen. Leider konnte ich beim Testen des Problems keine Fehlermeldung im Ausnahmeprotokoll oder im Systemprotokoll sehen, also habe ich ein wenig Debugging durch die Prototype Ajax-Funktion durchgeführt, die mit dem Server für Anfragen zu Rechnungsinformationen kommuniziert.
öffne opcheckout.js und finde den folgenden Code:
var request = new Ajax.Request(
this.saveUrl,
{
Methode: 'post',
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: checkout.ajaxFailure.bind(checkout),
Parameter: Form.serialize(this.form)
}
);
und folgende Änderungen vornehmen, damit diese Warnung die Fehlermeldung anzeigt
var request = new Ajax.Request(
this.saveUrl,
{
Methode: 'post',
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: function(transport){alert(transport.responseText)},
Parameter: Form.serialize(this.form)
}
);
Wenn ein Fehler auftritt, sehen Sie eine Warnmeldung: „Die Preisdaten-CSV von Royal Mail für ‚$file‘ konnten nicht geladen werden. Stellen Sie sicher, dass das app/-Verzeichnis in Ihrem Include-Pfad enthalten ist.“
Tatsächlich ist das Problem, das ich gefunden habe (in meinem Fall könnte es etwas anderes für Sie sein), dass die Meanbee Royal Mail-Erweiterung den Versandpreis in einer CSV-Datei im Ordner app/code/community/Meanbee/Royalmail/data speichert. Wenn wir versuchen, von einer anderen Store-Ansicht aus zu bezahlen, und vielleicht die Basis-URL unterschiedlich ist (hier war es etwas wie www.domain.com/us/), sucht die Meanbee-Funktion _loadCsv($file) in der Klasse Abstract.php immer nach der Datei im Ordner der Basis-URL. Daher wird ein Fehler bei der Anforderung eines ungültigen Dateipfads auftreten. Wenn Sie die folgenden Änderungen in der Funktion _loadCsv vornehmen, können Sie diesen Fehler beheben.
$filename = “/app/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//ersetze die obige Zeile mit
$filename = Mage::getBaseDir(‘app’) . “/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//es wird immer vom Basisverzeichnis aus suchen
Ich kann keine Garantie geben, dass dies bei Ihnen zu 100 % perfekt funktioniert, jedoch hat es mein Problem behoben.