في الأسبوع الماضي، كنت أعمل مع Magento وأحاول إعداد وجهات متاجر مختلفة. بشكل أساسي، يحتاج العميل إلى إعداد وجهة متجر فردية لكل دولة مع عنوان URL أساسي مختلف. على سبيل المثال، إذا كان عنوان URL الأساسي لمتجرك الرئيسي هو www.domain.com، ولديك وجهة متجر واحدة للولايات المتحدة، فسيكون عنوان URL الأساسي لها هو www.domain.com/us/.
كل شيء كان يسير على ما يرام، لكنني واجهت مشكلة في عملية الدفع. إذا ذهبت إلى المتجر الأمريكي، وأضفت بعض المنتجات إلى السلة، ثم حاولت إتمام عملية الدفع، قد تواجه مشكلة حيث يتم إعادة توجيه الصفحة إلى صفحة سلة التسوق، إما قبل أو بعد إدخال معلومات الفوترة. إذا حاولت إتمام عملية الدفع مرة أخرى، ستتكرر نفس العملية. في الواقع، يقوم Magento بإرسال طلب معلومات الفوترة إلى الخادم باستخدام Ajax، وأحيانًا لا يمكنك رؤية الخطأ. ومع ذلك، يمكنك رؤية الخطأ في ملف سجل الاستثناءات أو سجل النظام. للأسف، أثناء اختباري للمشكلة، لم أتمكن من رؤية أي رسالة خطأ في سجل الاستثناءات أو سجل النظام، لذا قمت ببعض تصحيح الأخطاء من خلال وظيفة Prototype Ajax، التي تتواصل مع الخادم لطلبات معلومات الفوترة.
افتح opcheckout.js وابحث عن الكود أدناه:
var request = new Ajax.Request(
this.saveUrl,
{
طريقة: 'نشر'،
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: checkout.ajaxFailure.bind(checkout)،
parameters: Form.serialize(this.form)
}
);
وقم بإجراء التغييرات التالية، بحيث تكون هذه الرسالة تنبيه بالفشل
var request = new Ajax.Request(
this.saveUrl,
{
طريقة: 'نشر'،
onComplete: this.onComplete,
onSuccess: this.onSave,
onFailure: function(transport){alert(transport.responseText)},
parameters: 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% بالنسبة لك، ومع ذلك، فقد حل مشكلتي.