La settimana scorsa, stavo lavorando con Magento e cercando di impostare diverse viste del negozio. Fondamentalmente, il cliente ha bisogno di impostare una vista del negozio individuale per ogni paese con un URL di base diverso. Ad esempio, se l'URL di base del tuo negozio principale è www.domain.com, e hai una vista del negozio per gli Stati Uniti, il suo URL di base sarebbe www.domain.com/us/.
Tutto stava andando bene, ma ho incontrato un problema con il processo di checkout. Se vai al negozio degli Stati Uniti, aggiungi alcuni prodotti al carrello e poi provi a completare l'acquisto, potresti riscontrare un problema in cui la pagina reindirizza di nuovo alla pagina del carrello, sia prima che dopo aver inserito le informazioni di fatturazione. Se provi a completare l'acquisto di nuovo, lo stesso processo si ripeterà. In realtà, Magento invia la richiesta delle informazioni di fatturazione al server utilizzando Ajax, e a volte non puoi vedere l'errore. Tuttavia, puoi vedere l'errore nel tuo file di log delle eccezioni o nel log di sistema. Sfortunatamente, mentre stavo testando il problema, non sono riuscito a vedere alcun messaggio di errore nel log delle eccezioni o nel log di sistema, quindi ho fatto un po' di debugging attraverso la funzione Prototype Ajax, che comunica con il server per le richieste di informazioni di fatturazione.
apri opcheckout.js e trova il codice qui sotto:
var request = new Ajax.Request(
this.saveUrl,
{
metodo: 'post',
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: checkout.ajaxFailure.bind(checkout),
parametri: Form.serialize(this.form)
}
);
e apporta le seguenti modifiche, in modo che questo avvisi il messaggio di errore
var request = new Ajax.Request(
this.saveUrl,
{
metodo: 'post',
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: function(transport){alert(transport.responseText)},
parametri: Form.serialize(this.form)
}
);
Quindi, se c'è un errore, vedrai un messaggio di avviso: “Impossibile caricare il file csv dei prezzi di Royal Mail per ‘$file’. Assicurati che la directory app/ sia nel tuo percorso di inclusione.”
In realtà, il problema che ho riscontrato (nel mio caso, potrebbe essere qualcos'altro per te) è che l'estensione Meanbee Royal Mail memorizza il prezzo di spedizione in un file CSV all'interno della cartella app/code/community/Meanbee/Royalmail/data. Quando proviamo a completare l'acquisto da una vista negozio diversa, e forse l'URL di base è diverso (qui era qualcosa come www.domain.com/us/), la funzione Meanbee _loadCsv($file) nella classe Abstract.php cerca sempre il file all'interno della cartella dell'URL di base. Quindi, si verificherà un errore di richiesta di percorso file non valido. Se apporti le seguenti modifiche nella funzione _loadCsv, puoi risolvere questo errore.
$filename = “/app/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//sostituisci la riga sopra con
$filename = Mage::getBaseDir(‘app’) . “/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//guarderà sempre dalla directory di base
Non posso garantire che questo funzionerà al 100% perfettamente per te, tuttavia ha risolto il mio problema.