Förra veckan arbetade jag med Magento och försökte ställa in olika butiksvyer. I grund och botten behöver kunden ställa in en individuell butiksvy för varje land med en annan bas-URL. Till exempel, om din huvudbutiks bas-URL är www.domain.com, och du har en butiksvy för USA, skulle dess bas-URL vara www.domain.com/us/.
Allt gick bra, men jag stötte på ett problem med kassan. Om du går till den amerikanska butiken, lägger till några produkter i kundvagnen och sedan försöker kolla ut, kan du stöta på ett problem där sidan omdirigeras tillbaka till kundvagnssidan, antingen före eller efter att ha angett faktureringsinformationen. Om du försöker kolla ut igen, kommer samma process att upprepas. Faktiskt skickar Magento begäran om faktureringsinformation till servern med hjälp av Ajax, och ibland kan du inte se felet. Men du kan se felet i din undantagsloggfil eller systemlogg. Tyvärr, medan jag testade problemet, kunde jag inte se något felmeddelande i undantagsloggen eller systemloggen, så jag gjorde lite felsökning genom Prototype Ajax-funktionen, som kommunicerar med servern för begärningar om faktureringsinformation.
öppna opcheckout.js och hitta följande kod:
var request = new Ajax.Request(
this.saveUrl,
{
metod: 'post',
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: checkout.ajaxFailure.bind(checkout),
parametrar: Form.serialize(this.form)
}
);
och gör följande ändringar, så att detta meddelande om misslyckande visas
var request = new Ajax.Request(
this.saveUrl,
{
metod: 'post',
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: function(transport){alert(transport.responseText)},
parametrar: Form.serialize(this.form)
}
);
Så, om det finns något fel, kommer du att se ett varningsmeddelande: “Kunde inte ladda Royal Mail prisdata csv för ‘$file’. Se till att app/-katalogen finns i din inkluderingsväg.”
Faktiskt, problemet jag fann (i mitt fall kan det vara något annat för dig) är att Meanbee Royal Mail-tillägget lagrar fraktpriset i en CSV-fil inuti app/code/community/Meanbee/Royalmail/data-mappen. När vi försöker checka ut från en annan butiksvy, och kanske bas-URL:en är annorlunda (här var det något som www.domain.com/us/), letar Meanbee-funktionen _loadCsv($file) i Abstract.php-klassen alltid efter filen inuti bas-URL-mappen. Så, den kommer att stöta på ett felmeddelande om ogiltig filväg. Om du gör följande ändringar i _loadCsv-funktionen kan du åtgärda detta fel.
$filename = “/app/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//ersätt ovanstående rad med
$filename = Mage::getBaseDir(‘app’) . “/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//det kommer alltid att se från baskatalogen
Jag kan inte ge någon garanti för att detta kommer att fungera 100% perfekt för dig, men det har löst mitt problem.