يعد دروبال أحد أشهر ثلاثة أنظمة إدارة محتوى، ويتميز بمرونته العالية وقابليته الفائقة للتطويع وهو ما يجعله الخيار الأنسب للمشاريع المتوسطة والكبيرة. تفرض هاتين الميزتين وجود التفاصيل الدقيقة والخيارات الكثيرة التي يتطلب إعدادها تخصيص وقت أطول للتعلم لقطف ثمرة إنتاجية أعلى وأكثر جودة.
عمليات وخيارات التجارة الإلكترونية لها نفس الميزات العامة لدروبال، أي المرونة العالية والقابلية للتطويع، ليناسب كافة اﻻحتياجات والمشاريع، وعلى الرغم من وجود الكثير من الوحدات Module الخاصة بالتجارة الإلكترونية، تعد وحدة commerce هي الأشهر والأكثر استخدامًا في العالم (نحو 52,000 متجر إلكتروني قائم عليه عام 2022).
متطلبات وملاحظات حول الدرس
- معرفة عامة بنظام إدارة المحتوى دروبال ونسخة مثبتة من دروبال 9.
- خادم محلي أو على الإنترنت بصلاحية SSH لتشغيل برنامج Composer.
- برنامج Composer لإدارة الحزم.
- الصور التوضيحية ناتجة بعد تثبيت وتفعيل وحدات يُوصى باستخدامها مثل Admin Toolbar، إذا لم تكن تستخدم هذه الوحدة يمكنك اتباع مسار الوصول URL وستكون بطريقة اقتباس يبدأ بعد عنوان موقعك وسابقة اللغة، أي العبارة التالية للوصول لصفحة التحكم بالعملات:
admin/commerce/config/currencies
وذلك عوضًا عن:
http://127.0.0.1/your_site/web/ar/admin/commerce/config/currencies
- سيحوي كل عنوان جزءًا نظريًا يناقش عدة أفكار تطبيقية في ذلك الجزء، ثم خطوات تنفيذية لمهمة في ذلك الجزء.
هيكل التجارة الإلكترونية في وحدة commerce
لا يُقصد بالمتجر في وحدة commerce المعنى التقليدي للمتاجر، بل يشمل كل منشأة تمارس نشاطًا اقتصاديًا، سواء كان ذلك جمعية خيرية تستلم التبرعات أو فندقًا يمكن عبر موقعه حجز مواعيد وتحديد مدة الإقامة، أو موقعًا يقدم اشتراكًا مدفوعًا مقيدًا بمدة زمنية للوصول لبعض الموارد. إضافة لتلك التي تقدم خدمات مثل الاستشارات أو السلع، سواء كانت ملفًا إلكترونيًا، أو بضاعة تُرسل للعميل عبر الشحن.
تتكون وحدة commerce من عدة وحدات فرعية يقوم كل واحد منها بمهمة محددة بدقة، ويمكن إضافة المزيد من الوحدات أو إنشاء أخرى جديدة بحسب متطلبات النشاط الاقتصادي، يجب التأكد دائمًا من فهم منطق العمل وما توفره وحدة commerce لإختيار الأسلوب والطريقة المثلى لإنجاز المهمة، إهمال التخطيط الدقيق للمهمة قد يسبب الكثير من التبعات المكلفة لصاحب المشروع.
الصورة أدناه هي رسم توضيحي لهيكل منشأة تجارية بسيطة بوحدة commerce والتي تحوي افتراضيًا وحدات معنية بإدارة المتاجر والأموال والبضائع والطلبات، لكن قد يفرض منطق العمل توسعته بإضافة وحدات إضافية مثل وحدة إدارة المخازن commerce_stock أو وحدة الشحن commerce_shipping.
تثبيت وحدة commerce
من سطر الأوامر في مجلد موقع دروبال اكتب التالي (بحسب الإصدار الأحدث المتوفر):
composer require 'drupal/commerce:^2.30'
سيتم تثبيت وحدة commerce الإصدار 2.30، ستشاهد صورة مثل التالي:
في حال مواجهة خطأ نقص الوحدة inlineentityform، ثبّت الوحدة بالأمر:
composer require drupal/inline_entity_form:^1.0@RC'
نفعّل وحدة commerce من قائمة الوحدات، يُظهر البحث عن كلمة commerce الوحدات المثبتة وهي 13 وحدة.
admin/modules
ليس من الضروري تفعيل كل الوحدات فمنطق العمل يحدد الوحدات اللازم تفعيلها لأغراض تعليمية، أقترح تفعيل وتجربة كل الوحدات. بعد إتمام عملية التفعيل، ستظهر لك قائمة جديدة لإعدادات التجارة الإلكترونية، مثل هذه:
إنشاء المتاجر الإلكترونية
المتاجر أنواع، ونوع المتجر يحدد سلوك المتجر وخصائصه، فمثلًا لا يُتصور أن يبيع ويشحن متجر ما (مطعم) طعامًا لبلد آخر كما أن نوع الفاتورة التي تستخدمها المتاجر من نوعية (المطاعم) تحوي بيانات (مثل طاولة الخدمة) غير مناسبة لسائر أنواع المتاجر (مثل المتاجر التي تعرض سلع رقمية فقط). يحوي commerce افتراضيًا متجرًا من نوع online دون تفاصيل منطق العمل.
يجب توفير متجر واحد على الأقل لإنشاء بقية أجزاء النشاط الاقتصادي (إضافة منتج، أو إنشاء فاتورة، وغير ذلك)، لكن في الكثير من الأنشطة الاقتصادية يجب إضافة أكثر من متجر، مثل الأمثلة التالية:
- المشروع عبارة عن موقع لمجمع تجاري يضم عددًا من المتاجر المختلفة والتي تعرض أنواعًا مختلفة من السلع والخدمات، وليس بين مالكيها أي علاقة.
- المشروع عبارة عن نشاط تجاري له أكثر من فرع، ويقدم كل فرع خدماته لمنطقة معينة فقط، مثل مطعم له فرع في مدينة الرياض وفرع آخر في مدينة الدمام.
إنشاء متجر
لإنشاء متجر من نوعية المتاجر الموجودة مسبقًا في دروبال online يمكن اختيار المسار:
store/add/online
يحوي كل متجر من نوع online الموجود افتراضيًا في دروبال البيانات التالية:
- الاسم: اسم المتجر.
- البريد الإلكتروني: ستصل رسالة بريدية لصاحب المتجر في حال نشوء عملية شراء من متجره.
- العملة الافتراضية: العملة (العملات) التي يمكن للمتجر التعامل بها، افتراضيًا تتواجد عملة الدولار الأمريكي ويمكن إضافة المزيد من العملات.
- العنوان: تفرض الكثير من التشريعات وجود عنوان مُعلن للمتاجر الالكترونية، يتواجد في وحدة commerce نمط من العنوان الإلكتروني يضم البلد والمدينة والشارع.
- البلدان التي يقدم المتجر لها الخدمة Supported countries: يمكن اختيار جميع البلاد أو الاكتفاء ببعض البلاد دون غيرها، من تطبيقات هذا الخيار تحديد متاجر تقدم أسعارًا تفضيلية لبعض البلدان دون غيرها، أو حرمان بلاد أخرى من الخدمات.
- إعدادات الضرائب Tax settings: يمكن إنشاء البضاعة مع تكلفة الضرائب أو دون ذلك، وتحسب وحدة commerce الضريبة بحسب إعدادات مقدار الضريبة في كل بلد. يمكن التحكم في إعدادات الضرائب من الوحدة المعنية بالضرائب.
يمكن الاطلاع على قائمة حقول بيانات المتجر من إعدادات نوع المتجر online من المسار:
admin/commerce/config/store-types/online/edit/form-display
إنشاء عملة
تحتوي وحدة commerce افتراضيًا عملة الدولار الامريكي، لكن يمكن إضافة المزيد من العملات الرسمية مثل الريال السعودي أو الدينار البحريني، وغير الرسمية مثل العملات الرقمية أو حتى نظام عملات خاصة بالموقع أو المشروع، مثل نظام النقاط الموجود في الألعاب. يمكن إضافة العملات من المسار:
admin/commerce/config/currencies
إنشاء نوع متجر
يمكن الاطلاع على أنواع المتاجر الموجودة في الموقع من المسار أدناه، ويمكن إضافة المزيد من أنواع المتاجر باختيار "إضافة نوع متجر" Add store type.
admin/commerce/config/store-types
في حال إضافة نوع متجر، سيٌضاف تلقائيًا حقول البيانات الافتراضية مثل الموجودة في نوع المتجر online ويمكن إضافة المزيد من الحقول بحسب منطق العمل تمامًا مثل إضافة حقول البيانات في أي نوع محتوى آخر. فمثلًا لو أُنشأ نوع متجر باسم مطعم، يمكن وضع حقل "يوفر خدمة توصيل الطلبات".
إدارة المنتجات Product
بحسب هيكل وحدة commerce تصنف الكيانات (مثل كيان المتجر أو كيان المنتج أو كيان الفاتورة) بأنواع محددة، ويحدد كل صنف صفات وسلوك كل عضو من هذا الصنف. مثلًا منتج "كتاب القانون في الطب" تقع ضمن صنف منتجات "كتاب"، ويحوي صنف المنتج "كتاب" مجموعة صفات تخص هذا الصنف مثل "عدد الأوراق" و "اسم دار النشر" و"الرقم الدولي المعياري للكتاب" المعروف اختصارًا باسم "ردمك". من الطبيعي أن أصنافًا أخرى من المنتجات تضم صفات وسلوكيات مختلفة قد تكون مشتركة بين العديد من الأصناف مثل "الوزن" وقد تكون مختصة بصنف دون غيره مثل صفات الكتاب أعلاه.
افتراضيًا تضم وحدة commerce نوع منتج باسم "default"، يمكن الإطلاع على أنواع المنتجات، وإضافة نوع منتج إليها أو تحرير أحدها من المسار:
admin/commerce/config/product-types
تأكد من دراسة المشروع وفهم منطق العمل بدقة، فالتصميم الحكيم لصفات وسلوكيات أنواع المنتجات هو الأساس الذي يعمل به دروبال في إدارة العمليات، فمثلًا قد تحتاج لصفة "الوزن" لمحاسبة تكلفة الشحن البريدي لاحقًا.
إنشاء منتج
يمكن إنشاء منتج جديد من صفحة المنتجات في المسار التالي باختيار "Add product":
admin/commerce/products
كما يمكن الوصول مباشرة لصفحة إضافة منتج من نوع ما، فمثلًا لإضافة منتج من نوع default يمكن اختيار المسار:
product/add/default
ستكون في صفحة إضافة منتج من نوع default الحقول المعرفة لهذا النوع (العنوان والمتن)، إضافة لحقول دروبال العامة لكل نوع من المحتوى مثل لغة المحتوى وإعدادات المسار، ويمكن "حفظ" المنتج وإضافة أنواع المنتجات إليه لاحقًا، أو البدء بإضافة نوع إليه مباشرة عبر "Save and add variations".
من الطبيعي أن إعدادات دروبال العامة تؤثر في الحقول التي تظهر حين إضافة المنتج، فمثلًا حقل اختيار اللغة متأثر بإعدادات الترجمة في إعدادات دروبال.
/product/1/variations
تحتوي وحدة commerce افتراضيًا صفة نوع باسم default أيضًا، يمكن إضافته لمنتج من المسار أدناه أو اختيار "Add variation".
product/1/variations/add/default
يظهر من صفحة إضافة صفة نوع default الحد الأدنى من البيانات اللازمة لإضافة صفة نوع المنتج، وهي:
- وحدة إدارة المخزون أو SKU: وهو معرف فريد لكل صفة نوع من البضائع ويستخدم لإدارة مخزون البضاعة، فمثلًا لو كان لدى متجر قميص أبيض بقياس 20 وآخر بقياس 40 وقميص أصفر بقياس 20 وآخر بقياس 40، فيجب إنشاء أربعة معرفات SKU حتى يتبين الكميات الصحيحة عند إدارة المخزون المتوفر من كل صفة نوع. لا يوجد قاعدة لإنشاء معرفات SKU لكن ينصح أن تكون نصًا يحوي بيانات نوع المنتج وتفاصيل صفة النوع.
- خيار قائمة الأسعار Provide a list price: يؤدي تفعيل هذا الخيار إلى إمكانية تعيين أكثر من عملة للمنتج، مثل أن تكون الريال السعودي أو الدينار البحريني.
- السعر: يضم هذا الحقل جزأين: قيمة عددية هي مقدار للسعر وقيمة اسمية وهي عملة السعر.
- اللغة: من إعدادات دروبال العامة وتحدد إمكانية ظهور هذا النوع في أي من لغات الموقع.
بعد "حفظ" هذا النوع من المنتج سيظهر في قائمة أنواع المنتجات، كما أنه في حال عرض صفحة المنتج سيظهر السعر المحدد لهذا النوع (لأن المنتج يحوي صفة نوع واحد فقط) كما سيظهر زر إضافة لسلة المشتريات "Add to cart".
لاحظ أنه يمكن الوصول لصفحة المنتج عن طريق مسارين، أحدهما باستخدام الرقم المعرف للمنتج والآخر ما وُضع في بديل المسار، أي:
/product/1 /donate
كتطبيق وتوسعة لإدارة المنتج، تصور أن المشروع موقع لبيع الكتب، نوع المنتج هو كتاب ولكل كتاب صفتا نوع: رقمي وورقي، والكتاب الورقي يمكن أن يكون له صفتي نوع: بغلاف عادي (ورقي) أو بغلاف صلب (فني أو مُجلد).
إنشاء نوع منتج
يجب بداية إنشاء نوع منتج باسم "كتاب" يضم البيانات المشتركة بين جميع أنواع هذا المنتج، في المثال أعلاه اسم المؤلف والناشر ونبذة عن الكتاب، بيانات ثابتة لكل منتج، بغض النظر عن صفة نوعه (رقمي أو ورقي).
admin/commerce/config/product-types/add
سننشئ صفحة لإنتاج نوع البضاعة كالصورة أدناه، وكسائر أنواع المحتوى في دروبال، لكل محتوى اسم بلغة البشر واسم بلغة الحاسوب (يجب ان يكون بحروف انجليزية صغيرة)، لاحظ حقول الأنواع الخاصة بنوع المنتج التي تنشأ حاليًا:
- الأنواع: في المثال أعلاه، يحتاج المشروع لنوع "كتاب ورقي" و "كتاب رقمي" غير الموجودين بعد، لاحظ أنه حين إنشاء نوع بضاعة، تقترح وحدة commerce إدراج نوع جديد له أو الاختيار من الأنواع الموجودة سابقًا.
- خيار إمكانية تعدد صفات النوع بالنسبة لنوع المنتج، وهو ما نحتاج إليه نظرًا لأن للكتاب صفتا نوع.
بعد حفظ نوع المنتج المنشأ حديثًا، يمكن إضافة حقول المؤلف والناشر من المسار أدناه، كما هو معمول به في دروبال.
admin/commerce/config/product-types/book/edit/fields
إدارة أنواع المنتج
عند إنشاء نوع منتج، يقدم دروبال خيار إنشاء نوع جديد بنفس اسم نوع المنتج (في المثال أعلاه book)، لكن يُقترح تجنب ذلك وإنشاء أنواع المنتج يدويًا لاختيار اسم لا يختلط مع سائر الأسماء. من المسار أدناه، إذهب لصفحة إنشاء نوع منتج.
admin/commerce/config/product-variation-types/add
من صفحة إنشاء صفة نوع منتج، ليكن اسم صفة النوع للمنتج "كتاب ورقي" والاسم الإنجليزي (للحاسوب) "book_paper". لاحظ خيار نوع الطلبية، إذ حاليًا لا يوجد إلا نوع واحد هو الطلبية الافتراضية، لكن في المثال أعلاه يفرض منطق العمل وجود نوعان من الطلبيات وهي الكتاب الورقي ويضاف فيه عملية شحن، بينما الكتاب الإلكتروني ليس بحاجة لهذا الإجراء. حاليًا ليكن الخيار هو الطلبية الافتراضية.
كرر العملية بإنشاء صفة نوع كتاب رقمي "book_digital" لتحصل نهاية على قائمة بها ثلاثة أنواع من السلع، يوصى بالإبقاء على النوع default للاستخدامات العامة.
بالرجوع لصفحة تحرير صفة نوع منتج الكتاب، يمكن اختيار صفة النوع "كتاب ورقي" و "كتاب رقمي" لتكون الصفتان متاحتين لنوع المنتج "كتاب".
admin/commerce/config/product-types/book/edit
كتطبيق عملي، اتجه لصفحة إضافة منتج من المسار:
product/add
بخلاف المرة الأولى، سيظهر في قائمة أنواع السلع، النوع "كتاب" الذي تم إنشاؤه سابقًا، أنشئ منتجًا من النوع "كتاب" وليكن اسمه "القانون في الطب" مثلًا، ثم اتجه لتبويب صفات الأنواع، سترى صفتي النوعين "كتاب ورقي" و "كتاب رقمي" في قائمة الأنواع، أنشئ منتج من كل صفة نوع كما ذكر أعلاه.
اتجه لصفحة استعراض المنتج، ستظهر قائمة يمكن منها اختيار صفة نوع المنتج.
أما الاختيار من صفات خاصة متوفرة في نوع ما من المنتج، فهو ما يتم عبر إدارة خصائص المنتج.
إدارة خصائص المنتج Product attributes
خصائص المنتج هو الخيار الذي يمكن من خلاله تحديد صفات ضمن نوع من السلع، في المثال أعلاه صفة نوع الغلاف ورقي أو رقمي ويمكن أن يكون لون لباس أو مقاس حذاء. لإنشاء خصائص منتج يمكن الإستفادة من المسار:
admin/commerce/product-attributes/add
في صفحة إضافة خصائص المنتج، ليكن اسم الخاصية "نوع الغلاف" مع مسمى إنجليزي متناسب معه وليكن "book_cover_type". نوع الحقل element type: سيكون شكل الخيار الذي يشاهده المستخدم. أنواع المنتج: من هذا الجزء تحدد الأنواع التي تحوي هذا الخيار (خصائص المنتج).
بعد حفظ خاصية المنتج نوع الغلاف يمكن إدخال القيم المعنية وهي غلاف ورقي وغلاف محكم.
بالرجوع لصفحة أنواع المنتج، ضاعف صفة النوع نسخة ورقية مع تغير الحقول: العنوان ومعرف SKU والسعر ونوع الغلاف.
ومن صفحة استعراض المنتج، يمكن مشاهدة تغيير البيانات (مثلاً السعر) مع تغير صفة نوع المنتج من القائمة، ويمكن نهايةً إضافة المنتج المختار لسلة المشتريات وإكمال عملية الشراء.
إدارة بوابات الدفع
بوابات الدفع هي الآليات التي يتم عبرها تحويل سعر المنتج لصاحب المتجر وهي:
- آليات الدفع اليدوي: وتشمل الدفع النقدي عند التسليم أو الصكوك المصرفية التي يستلم صاحب المتجر المبلغ المعين بمراجعة المصرف.
- آليات الدفع الآلية: وتشمل جميع النظم الآلية للدفع الإلكتروني سواء كانت تعامل آلي مع الخدمات الإلكترونية لمصرف أو ضمن شبكة نقود وطنية (مثل بنفت في البحرين أو سداد في السعودية) أو بوابات دفع مرتبطة بشبكات صرافة دولية أخرى مثل PayPal أو Visa أو Tap أو Gaatee، عدد بوابات الدفع الآلية يتجاوز المئات.
نظرًا لاختلاف الرسوم والضرائب وآليات تحويل المبلغ لصاحب المتجر، من الضروري دراسة بوابات الدفع المناسبة للمشروع قبل التعامل مع أي منها.
من أشهر بوابات الدفع في دول الخليج العربي والشرق الأوسط: ميسر، بيتابس، هايبر باي، gate-e، تلر، تاب.
إنشاء الدفع حين التسليم
يمكن الوصول لصفحة إنشاء بوابة دفع من المسار:
admin/commerce/config/payment-gateways/add
حيث يمكن ملئ بيانات بوابة الدفع تمامًا مثل سائر أنواع المحتوى في دروبال، مع ملاحظة مايلي:
- خانة الإضافات Plugin: في حال عدم تثبيت وتفعيل إضافات بوابات الدفع الآلية، ستكون بوابة الدفع اليدوية Manual هي الخيار الوحيد المتاح.
- اسم العرض: يمكن أن يكون "دفع حين التسليم" أو "صك مصرفي" وغير ذلك من الآليات التي يجب على صاحب المتجر التأكد من وصول المبلغ إليه يدويًا، هذا الاسم يعرض لمستخدم الموقع.
- الشروط: شروط تفعيل بوابة الدفع مثل تحديد بوابة دفع معينة للعملاء في بلد معين، أو تفعيل بوابة دفع إذا تجاوز مبلغ الفاتورة مقدارًا معينًا. احفظ بوابة الدفع اليدوية دون شروط.
إنشاء بوابة دفع الكترونية
يوجد أكثر من 140 وحدة ربط بوابات الدفع الإلكترونية، على الرغم من أن العديد من المواقع العربية القائمة على دروبال توفر بوابات دفع، لم ينشر مطوروها الوحدة البرمجية الخاصة بربط بوابة الدفع بدروبال في موقع دروبال الرسمي للإستفادة العامة، قد تنشر بوابة تاب الوحدة البرمجية الخاصة بالتعامل مع دروبال حيث تتواجد صفحة الوحدة البرمجية commerce tap. توفر دروبال مجموعة ثرية من إمكانيات الإرتباط عبر API أنظمة الدفع المختلفة.
إدارة الطلبات
الطلب بمنطق commerce هو الآلية التي تنتظم بها عملية الشراء بدءًا من اختيار العميل للمنتج حتى حصوله عليه، من هذا المنطلق يمكن أن يكون للطلب أكثر من صفة نوع، فمثلًا يمكن أن يحوي نوع الطلب لمطعم يشتري فيه العميل الوجبات مع تحديد طاولة الخدمة أو أن تكون نتيجة عملية الشراء مجرد رقم تفعيل برنامج دون أي بيانات إضافية.
في حال وجود منتج مكتمل البيانات أي محدد النوع وبوابة دفع مفعلة، يمكن إضافة المنتج لسلة المشتريات وإكمال عملية الشراء. توفر وحدة commerce إفتراضيًا نموذج سير عملية الطلب بالطريقة الأكثر رواجًا أي: توفير سلة مشتريات يمكن إضافة أي عدد من السلع إليها مع إمكانية تحديد كمية كل منتج وحساب التكلفة النهائية، ثم صفحة إدخال بيانات عنوان الشحن والاستفادة من العروض ثم دفع المبلغ المستحق عبر أي بوابة دفع مفعلة.
كمثال، تظهر الصور التالية عملية شراء منتج الكتاب الذي تم إنشائه أعلاه.
استعراض الطلبات
يمكن الوصول للطلبات المكتملة أو إنشاء عملية طلب يدويًا من المسار:
admin/commerce/orders
في حال وجود طلب مكتمل يمكن عرضه أو تحريره أو إدارة عمليات الدفع الخاصة به.
تحرير الطلبات
في حال وجود طلب فعال يمكن الوصول إليه من المسار التالي (بافتراض أن رقم الطلب 1):
admin/commerce/orders/1/edit
تحتوي صفحة تحرير الطلب إضافة لبيانات عنوان العميل:
- تحرير أجزاء الطلب: تشمل حذف أجزاء أو إضافة أجزاء أخرى أو تغير كمية وسعر أي واحد منها.
- تعديلات على الطلب عمومًا Adjustments: مثل إضافة ضريبة أو تحديد خصم خاص.
- القسائم: يمكن استخدام قسائم العروض في حال وجودها ضمن إعدادات العروض.
إدارة المدفوعات
تشمل إدارة المدفوعات تأكيد إتمام عملية الدفع (في حال اختيار بوابة دفع يدوية) أو إرجاع المبلغ للعميل بالكامل أو جزئيًا في حال كانت بوابة الدفع يدوية أو إن كانت بوابة الدفع الإلكترونية توفر هذه الإمكانية وكذلك إضافة مدفوع جديد.
يمكن الوصول لصفحة إدارة عمليات الدفع من خلال المسار:
commerce/orders/1/payments
إنشاء طلب يدوي
يمكن إنشاء طلب جديد يدويًا لأي عضو مسجل في الموقع، أو إنشاء عضوية جديدة للعميل وإعلامه بإنشاء عضوية له، يمكن الوصول لصفحة إنشاء طلب جديد من المسار:
admin/commerce/orders/add
وفي حال إنشاء طلب، تنتقل الصفحة مباشرة لصفحة مماثلة لصفحة تحرير الطلب ويمكن من خلاله تنفيذ كل العمليات السابقة مثل تحديد عنوان الشحن وإضافة أجزاء الطلب والتعديلات الخاصة بذلك مثل العروض أو إضافة مبالغ الضرائب.
خاتمة
وحدة commerce تضم عدة وحدات فرعية وتوفر بيئة عمل متكاملة للتجارة الإلكترونية وهي بالغة المرونة وقابلة للتطويع لتناسب كافة المشاريع بمنطق عمل مختلف، كما يمكن توسعة وظائفه بالعديد من الوحدات الإضافية المتوفرة مجانًا.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.