На прошлой неделе я работал с Magento и пытался настроить разные представления магазинов. В основном, клиенту нужно настроить индивидуальное представление магазина для каждой страны с разным базовым URL. Например, если базовый URL вашего основного магазина www.domain.com, и у вас есть одно представление магазина для США, его базовый URL будет www.domain.com/us/.
Все шло хорошо, но я столкнулся с проблемой в процессе оформления заказа. Если вы перейдете в американский магазин, добавите несколько товаров в корзину, а затем попытаетесь оформить заказ, вы можете столкнуться с проблемой, когда страница перенаправляет обратно на страницу корзины, либо до, либо после ввода платежной информации. Если вы попробуете оформить заказ снова, тот же процесс повторится. На самом деле, Magento отправляет запрос на платежную информацию на сервер с помощью Ajax, и иногда вы не можете увидеть ошибку. Однако вы можете увидеть ошибку в вашем файле журнала исключений или системном журнале. К сожалению, во время тестирования проблемы я не смог увидеть никаких сообщений об ошибках в журнале исключений или системном журнале, поэтому я провел отладку через функцию Prototype Ajax, которая взаимодействует с сервером для запросов на платежную информацию.
откройте opcheckout.js и найдите следующий код:
var request = new Ajax.Request(
this.saveUrl,
{
метод: ‘post’,
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: checkout.ajaxFailure.bind(checkout),
параметры: Form.serialize(this.form)
}
);
и внесите следующие изменения, чтобы это уведомление стало сообщением об ошибке
var request = new Ajax.Request(
this.saveUrl,
{
метод: ‘post’,
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: function(transport){alert(transport.responseText)},
параметры: Form.serialize(this.form)
}
);
Итак, если возникнет ошибка, вы увидите сообщение об ошибке: “Не удалось загрузить данные о ценах Royal Mail из csv для ‘$file’. Убедитесь, что каталог app/ находится в вашем пути включения.”
На самом деле, проблема, которую я обнаружил (в моем случае это может быть что-то другое для вас), заключается в том, что расширение Meanbee Royal Mail сохраняет цену доставки в CSV-файле внутри папки app/code/community/Meanbee/Royalmail/data. Когда мы пытаемся оформить заказ из другого представления магазина, и, возможно, базовый URL отличается (здесь это было что-то вроде www.domain.com/us/), функция Meanbee _loadCsv($file) в классе Abstract.php всегда ищет файл внутри папки базового URL. Таким образом, она столкнется с ошибкой запроса недопустимого пути к файлу. Если вы внесете следующие изменения в функцию _loadCsv, вы сможете исправить эту ошибку.
$filename = “/app/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//замените вышеуказанную строку на
$filename = Mage::getBaseDir(‘app’) . “/code/community/Meanbee/Royalmail/data/{$file}.csv”;
//он всегда будет смотреть из базового каталога
Я не могу гарантировать, что это сработает на 100% идеально для вас, однако это решило мою проблему.