وحدة Magento المخصصة: خطوة بخطوة لإنشائها في Magento 2

نشرت: 2020-11-11

تعد وحدة Magento المخصصة عملية تطوير مهمة لأي مطور Magento. كما تعلم ، في وقت ما ، قد يحتاج المطور إلى دمج وظائفه أو وحدته. في منشور المدونة هذا اليوم ، سنوجهك خطوة بخطوة لتطوير وحدة مخصصة في Magento 2

آخر تحديث: لقد أصدرنا للتو الإصدار 2.0 من Claue Multipurpose Magento 2 Theme ، مع مجموعة من تحسينات الأداء والميزات الحصرية. تحقق من هذا الموضوع الآن: Claue Magento Theme 2. 0

claue2_edited (1)

عرض حي

يعد Claue - Clean، Minimal Magento 2 & 1 Theme نموذجًا ممتازًا لمتجر تجارة إلكترونية حديث ونظيف يحتوي على أكثر من 40 تخطيطًا للصفحة الرئيسية والعديد من الخيارات للتسوق ، والمدونة ، والمحفظة ، وتخطيطات محدد مواقع المتاجر ، وصفحات مفيدة أخرى. يأتي إصدار Claue 2. 0 مع مجموعة من الميزات الحصرية بما في ذلك:

  • أن تكون مبنية على موضوع Luma.
  • تلبية جميع معايير موضوع Magento
  • تحسن كبير في الأداء
  • متوافق مع معظم ملحقات الطرف الثالث.
  • متوافق تمامًا مع Magento 2.4.x

هذه النسخة المتقدمة الثانية تختلف تمامًا عن سابقتها. وبالتالي ، إذا كنت تستخدم الإصدار 1 من Claue وترغب في التحديث إلى الإصدار 2 من Claue ، فيمكنك فقط إعادة إنشاء موقع ويب جديد بدلاً من التحديث من الإصدار القديم. الآن ، دعنا نعود إلى الموضوع الرئيسي.

Magento هي عبارة عن منصة متعددة الاستخدامات تأتي مع الكثير من الميزات المفيدة وتدعم الوحدات المجانية والمدفوعة. يوفر وحدات يمكن تثبيتها عبر الإنترنت وكذلك يمكن تخصيصها من أجل تلبية احتياجات العميل. يتم تحقيق التخصيص من خلال إنشاء وحدة نمطية ثم يمكن تعديلها وفقًا للاختيار باستخدام قوة لغة PHP. على سبيل المثال ، إذا كان موقع الويب الخاص بنا يحتوي على ميزة معينة أو مجموعة من الميزات أو المتطلبات غير الشائعة في السوق ، فيمكن للوحدة النمطية أن تملأ هذه الفجوة بالنسبة لنا.

يأتي Magento مع 3 أنواع من مجموعة التعليمات البرمجية (Code و Core و Local) حيث توجد الوحدات المخصصة والأساسية. التجمع المحلي (المجلد) هو المكان الذي توجد فيه جميع الوحدات النمطية المخصصة أو يجب وضعها. فيما يلي المكونات التي يجب أن تتضمنها الوحدة.

  • الكتل - هنا تحتاج إلى توفير الميزات المستخدمة لإظهار البيانات في قوالبنا.
  • النماذج - كل منطق الأعمال موجود هنا.
  • الموارد - تشمل النماذج الوظائف التي يتم استخدامها للتفاعل مع قاعدة البيانات.
  • وحدات التحكم - تحدد تخطيط الصفحة وتحظر الملفات ويتم تحميلها عند طلب عنوان URL.
  • إلخ - يتضمن ملفات التكوين بتنسيقات XML التي تُظهر Magento عدد ملفات الوحدات النمطية وكيف تتفاعل الوحدة.
  • المساعدون - يشمل الوظائف التي يتم استخدامها لتحديد منطق الأعمال المشترك (مثل تغيير حجم الصورة والتحقق من صحتها). يمكن استخدام هذه الوظائف في أي مكان عبر تطبيق Magento
  • SQL - يحتوي على برامج نصية SQL لإنشاء جداول SQL أو تعديلها أو حذفها.

كيفية إنشاء وحدة مخصصة Magento؟

قم بإنشاء وحدة نمطية بسيطة في Magento 2

يعد إنشاء وحدة بسيطة في Magento 2 أمرًا سهلاً. سوف تحتاج إلى تحقيق المهام التالية:

  • قم بإنشاء دليل جديد للوحدة
  • قم بإنشاء برنامج نصي registration.php
  • قم بإنشاء ملف معلومات etc/module.xml
  • قم بتثبيت الوحدة الجديدة

قم بإنشاء دليل جديد للوحدة

هناك خياران لتحديد موضع الدليل الجديد

  • app/code/{vendor}/
  • vendor/{vendor}/

يمكنك اختيار الخيار الأول إذا كانت وحدتك مخصصة لمتجر معين على الإنترنت تعمل عليه. ولكن إذا كنت تقوم بإنشاء وحدة بغرض استخدامها على مواقع الويب المختلفة ، فمن الأنسب تحديد الخيار الثاني. الآن سأستخدم الخيار الأول لهذا المثال.

أولاً ، تحتاج إلى إنشاء دليل يسمى EndPoint (اسم البائع لدينا) مع دليل فرعي بداخله ، MyModule :

 cd {website_root} mkdir -p app/code/EndPoint/MyModule

قم بإنشاء البرنامج النصي registration.php

يخبر ملف registration.php Magento بتسجيل الوحدة الجديدة باسم وموقع محددين.

قم بإنشاء ملف يسمى app/code/EndPoint/MyModule/registration.php بالرمز أدناه

 <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'EndPoint_MyModule' , __DIR__ );

قم بإنشاء ملف معلومات etc / module.xml

في هذه الخطوة ، تحتاج إلى إنشاء ملف معلومات الوحدة الخاصة بنا ، حيث سنحدد رقم إصدار الوحدة. أولاً ، يتعين علينا إنشاء الدليل etc داخل app/code/EndPoint/MyModule :

 mkdir app/code/EndPoint/MyModule/etc

ثم قم بإنشاء module.xml باستخدام سطر الأوامر التالي

 <?xml version="1.0"?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:Module/etc/module.xsd" > < module name = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >

قم بتثبيت الوحدة الجديدة

نحتاج الآن إلى تثبيت الوحدة الجديدة وتمكينها ، لذا من جذر موقع الويب الخاص بنا ، نحتاج إلى تشغيل الأمر

 php bin/magento setup:upgrade

سيقوم Magento بإخراج قائمة بأسماء الوحدات وتحديثات التكوين ويجب إدراج الوحدة النمطية الجديدة EndPoint_MyModule في تلك القائمة

أضف مسارًا مخصصًا إلى وحدتنا

الآن لدينا وحدة عاملة وممكّنة ، لكنها لم تفعل أي شيء بعد! ما هي الطريقة البسيطة للتحقق من تمكين الوحدة الخاصة بنا؟ لنقم بإعداد مسار مخصص ، لذلك إذا وصلنا إلى عنوان URL مثل https://{our_website}/mymodule/test/helloworld يمكننا إرجاع استجابة مخصصة من وحدة تحكم.

سيحتاج إنشاء مسار مخصص إلى بعض الخطوات من تلقاء نفسه:

  • قم بإنشاء دليل جديد لوحدة التحكم
  • قم بإنشاء ملف etc/routes.xml
  • قم بإنشاء وحدة التحكم
  • قم بترقية الوحدة الجديدة

قم بإنشاء دليل جديد لوحدة التحكم

أولاً ، نحتاج إلى إنشاء دليل جديد حيث ستعيش وحدة تحكم PHP الجديدة لمسارنا المخصص. يجب أن يكون مسار الدليل الجديد:

app/code/EndPoint/MyModule/Controller

يمكنك إنشاء العديد من مستويات الدليل كما تريد ، بناءً على المسار الذي نريده. على سبيل المثال ، إذا أنشأت فئة باسم Index في app/code/EndPoint/MyModule/Controller ، فسيكون عنوان URL الذي سيتم توجيهه إلى وحدة التحكم هذه هو https://{our_website}/mymodule/index (دليل "Controller" هو تم تجاهله).

اشترِ إذا أنشأت فئة باسم HelloWorld في app/code/EndPoint/MyModule/Controller/Test ، فسيكون عنوان URL الناتج هو https://{our_website}/mymodule/test/helloworld .

قم بإنشاء ملف etc / route.xml

routes.xml Magento عنوان URL الأساسي الذي سيتم استخدامه لوحدتنا. أولاً ، نحتاج إلى إنشاء دليل "الواجهة الأمامية" حيث يجب وضع ملف route.xml:

 mkdir app/code/EndPoint/MyModule/etc/frontend

عندما تحتاج إلى أن يكون عنوان URL الأساسي هو MyModule ، يجب عليك إنشاء ملف XML داخل الدليل الجديد الذي سيوجه جميع الطلبات المقدمة إلى عنوان URL المحدد إلى وحدات التحكم في الوحدة الخاصة بنا:

 <?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >

قم بإنشاء وحدة التحكم

إذا أردنا الرد على طلبات https://{our_website}/mymodule/test/helloworld ، فستحتاج إلى إنشاء دليل Controller الأساسي ودليل Test الفرعي:

 mkdir -p app/code/EndPoint/MyModule/Controller/Test

تحت هذا الدليل ، تحتاج إلى إنشاء وحدة تحكم Magento المخصصة الخاصة بنا. يجب أن تمتد جميع وحدات التحكم في المسار \Magento\Framework\App\Action\Action . نحتاج أيضًا إلى أسلوب عام construct() لتمرير السياق إلى سلفنا execute() وظيفة سيتم استدعاؤها عند النقر على عنوان URL:

 <?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }

قم بترقية الوحدة الجديدة

في هذه الخطوة ، تحتاج إلى ترقية إعداد Magento الخاص بنا. ولكن لأنك قمت بتضمين وحدة تحكم جديدة تحصل على معلمات من حاقن التبعية في الإنشاء. تحتاج أيضًا إلى تجميع محرك حقن التبعية (مثل المصانع والوكلاء والمعترضات). أخيرًا ، تحتاج إلى مسح ذاكرة التخزين المؤقت حتى يتم تقديم محتوى جديد من عنوان URL المخصص الخاص بنا:

 php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush

وهذا كل شيء. افتح / helloworld / index / index URL في متصفحك ويجب أن تحصل على شيء مثل هذا: هذا يعني أن وحدتنا تعمل!

وحدة مخصصة magento

يتعلق الأمر بنهاية البرامج التعليمية: وحدة Magento المخصصة: خطوة بخطوة لإنشائها في Magento 2. نأمل أن تكون هذه مدونة مفيدة لك. إذا كنت ترغب في فهم المزيد عن Magento ، يمكنك قراءة مقال Magento Platform الخاص بنا لمزيد من التفاصيل ، وتذكر أيضًا مراجعة ملحقات Magento 2 وموضوعات Magento 2 الخاصة بنا لدعم موقع الويب الخاص بك.