كيفية إنشاء وحدة مخصصة في Magento 2
نشرت: 2018-03-19ما هي وحدة Magento؟
كما تعلم ، فإن الوحدة عبارة عن دليل يحتوي على كتل ، ووحدات تحكم ، ونماذج ، ومساعد ، وما إلى ذلك - مرتبطة بميزة عمل معينة.
تماشياً مع التزام Magento بالنمطية المثلى ، تقوم الوحدة بتغليف ميزة واحدة ولها الحد الأدنى من التبعيات على الوحدات النمطية الأخرى.
توفر الوحدات النمطية ميزات الأعمال ، مع المنطق الداعم ، بينما تؤثر السمات بشدة على تجربة المستخدم ومظهر واجهة المتجر.
الغرض من الوحدة
الغرض من كل وحدة هو توفير ميزات منتج محددة من خلال تنفيذ وظائف جديدة أو توسيع وظائف الوحدات النمطية الأخرى. تم تصميم كل وحدة لتعمل بشكل مستقل ، لذا فإن تضمين أو استبعاد وحدة معينة لا يؤثر عادةً على وظائف الوحدات الأخرى.
في Magento 2 ، ستظهر الوحدات في دليل التطبيق / الكود لتثبيت Magento ، بالتنسيق التالي: app / code / <Vendor> / <ModuleName>. الآن سوف نتبع هذه الخطوات لإنشاء وحدة نمطية بسيطة تعمل على Magento 2.
قم بإنشاء وحدة Magento 2
- قم بإنشاء مجلد الوحدة النمطية.
- قم بإنشاء ملف etc / module.xml.
- قم بإنشاء ملف registration.php.
- قم بتشغيل إعداد bin / magento: قم بترقية البرنامج النصي لتثبيت الوحدة الجديدة.
- تأكد من أن الوحدة تعمل.
لنستعرض كل خطوة من هذه الخطوات بالتفصيل.
الخطوة 1: قم بإنشاء مجلد الوحدة النمطية
- هناك موقعان محتملان للوحدات النمطية في Magento 2: مجلد التطبيق / الرمز ومجلد البائع
اعتمادًا على كيفية تثبيت Magento 2 ، يمكن وضع الوحدات الأساسية إما في مجلدات vendor / magento / magento- * (لتثبيت الملحن) أو في مجلد app / code / Magento / (لاستنساخ github).
- أي من هذه المواقع يجب أن تختاره لوحدتك الجديدة؟
إذا قمت بإنشاء وحدة نمطية لمشروع معين ، فمن الأفضل اختيار مجلد التطبيق / الرمز والالتزام بمستودع المشروع.
إذا أنشأت امتدادًا ليتم إعادة استخدامه ، فمن الأفضل استخدام الملحن لإنشائه ، ووضع الوحدة النمطية الخاصة بك في مجلد البائع / <YOUR_VENDOR> / module-something.
يتكون اسم كل وحدة في Magento 2 من جزأين - البائع والوحدة نفسها ، لذلك تحتاج إلى تحديد اسم البائع والوحدة. في هذا المثال ، دعنا نطلق على البائع اسم "Learning" والوحدة "FirstUnit".
لنقم بإنشاء المجلد app / code / Learning وداخل هذا المجلد ضع مجلدًا آخر: FirstUnit. إذا كنت تستخدم سطر الأوامر ، فسيكون الرمز:
- cd إلى المجلد الجذر
- التطبيق / التعليمات البرمجية / التعلم mkdir
- mkdirapp / code / Learning / FirstUnit
تأكد من حصولك على إذن لإنشاء ملفات ومجلدات في التثبيت الخاص بك.
الخطوة الثانية: قم بإنشاء ملف etc / module.xml
هذا الملف مطلوب من أجل وجود الوحدة وهو يحتوي على المعلومات التالية:
- اسم وحدة
- إصدار الوحدة النمطية
- التبعيات
يتم تحديد اسم الوحدة بواسطة المجلدات التي أنشأناها للتو ، لأنه في Magento 2 ، يجب أن تتبع أسماء الفئات بنية المجلد. نظرًا لأننا أنشأنا المجلدات Learning / FirstUnit ، سيكون اسم الوحدة الخاصة بنا هو Learning_FirstUnit وستبدأ جميع الفئات التي تنتمي إلى هذه الوحدة بـ Learning \ FirstUnit - على سبيل المثال: Learning \ FirstUnit \ Observer \ Test.
إصدار الوحدة النمطية يشير إلى الإصدار الحالي من مخطط قاعدة البيانات والبيانات ، ويتم استخدامه في الترقية. على سبيل المثال ، افترض أنك قررت تعديل مخطط جدول في الوحدة النمطية الخاصة بك. كيف يمكنك التأكد من أن هذا التغيير سيحدث في جميع الحالات التي يتم فيها نشر الكود؟ لن يعمل تعديل قاعدة البيانات بواسطة استعلامات SQL المباشرة. بدلاً من ذلك ، قام Magento 2 بتثبيت البرامج النصية وترقيتها في كل وحدة (اختياريًا). تحتوي هذه البرامج النصية على أوامر لتعديل مخطط قاعدة البيانات أو البيانات. لتتبع ما إذا كان سيتم تنفيذ برنامج نصي أم لا ، يستخدم Magento 2 إصدارات الوحدة. في كل مرة تقوم فيها بتنفيذ تغيير قاعدة بيانات جديد ، فإنك تقوم بتنفيذ إصدار جديد من وحدة وتغيير module.xml المقابل. يحفظ Magento إصدار الوحدة النمطية الحالي في قاعدة بيانات ، وإذا لم تتطابق قيمة قاعدة البيانات والقيمة الموجودة في module.xml ، فسيتم تنفيذ رمز الترقية.
التبعيات. إذا كانت إحدى الوحدات تعتمد على وحدة أخرى ، فسيكون لملف module.xml إعلان خاص يحدد قائمة الوحدات التي تعتمد عليها الوحدة النمطية الحالية. في هذا المثال ، سنجعل وحدتنا تعتمد على Magento_Catalog.
باستخدام رمز سطر الأوامر التالي ، أنشئ المجلد app / code / Learning / FirstUnit / إلخ :
mkdir app / code / Learning / FirstUnit / إلخ
ثم قم بإنشاء ملف XML بالمحتوى التالي:
<؟ xml version = "1.0"؟> <config xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: noNamespaceSchemaLocation = "urn: magento: framework: Module / etc / module.xsd"> <اسم الوحدة النمطية = "Learning_FirstUnit" setup_version = "0.0.1"> <تسلسل> <اسم الوحدة النمطية = "Magento_Catalog" /> </sequence> </module> </config>
لاحظ أنه في ملف XML حددنا:
- اسم الوحدة: Learning_FirstUnit (بناءً على المجلدات التي أنشأناها)
- الإصدار: 0.0.1 (الإصدار الأولي لوحدتنا)
- التبعية: Magento_Catalog. يمكن أن يكون لدينا تبعيات متعددة. في هذه الحالة ، نضع <اسم الوحدة النمطية = ”..” /> العقد تحت عقدة التسلسل.
الخطوة الثالثة: قم بإنشاء ملف registration.php
يجب أن تحتوي كل وحدة على هذا الملف ، والذي يخبر Magento كيفية تحديد موقع الوحدة. استمرارًا في مثالنا ، قم بإنشاء ملف app / code / Learning / FirstUnit / registration.php . ثم ضع المحتوى التالي فيه:
<؟ php \ Magento \ Framework \ Component \ ComponentRegistrar :: register (\ Magento \ Framework \ Component \ ComponentRegistrar :: MODULE، 'Learning_FirstUnit'، __DIR__)؛
يعد ملف registration.php ملفًا قياسيًا يتبع نفس النمط لجميع الوحدات النمطية.
الشيء الوحيد الذي يختلف هو اسم الوحدة ، والذي في حالتنا هو Learning_FirstUnit
.
الخطوة 4: قم بتشغيل الأمر "setup: Upgrade"
يؤدي تشغيل هذا الأمر إلى تنشيط الوحدة الجديدة الخاصة بك ، وإخطار Magento بوجودها.
php bin / magento setup: ترقية
يجب أن تعكس قدرًا كبيرًا من المخرجات ، يجب أن يكون سطر واحد منها Learning_FirstUnit
. تحقق من وجود هذا السطر من التعليمات البرمجية.
الخطوة 5: تأكد من أن الوحدة الجديدة نشطة
حتى الآن ، لم نضف أي كود مفيد إلى وحدتنا - لا يزال فارغًا (وبالتالي غير مرئي). للتحقق من أنه تم التعرف عليه ، تحقق من تطبيق الملف / etc / config.php . يحتوي على قائمة بالوحدات النشطة التي تم إنشاؤها تلقائيًا.
أبدا تغيير هذه القائمة يدويا!
تطبيق cat / etc / env.php | grep Learning_FirstUnit
باستخدام هذه الخطوات ، يمكنك إنشاء وحدة نمطية جديدة بنجاح في Magento 2.
اقرأ أكثر:
كيفية نشر المحتوى الثابت في Magento 2