مصطلحات Magento 2
تعريف قصير لكل مصطلح بتقابله في كود Magento 2، ومعاه رابط للدرس اللي بيشرحه.
قاموس مصطلحات Magento 2 بيعرّف أهم المفاهيم اللي بتقابلها في الكود والتوثيق، زي Dependency Injection و Plugin و Observer و EAV و Indexer و Full Page Cache، في جملة أو اتنين لكل مصطلح. المصطلحات مكتوبة بالإنجليزي زي ما هي في الشغل، والتعريف بالعربي، ومع كل مصطلح رابط للدرس اللي بيشرحه بالتفصيل.
A
- ACL
Access Control List: نظام صلاحيات الأدمن في Magento. الـ resources بتتعرّف في acl.xml، وكل admin controller أو web API route بيحدّد الـ resource المطلوب لاستخدامه.
اتشرح في درس: لوحة الأدمن و UI Components
B
- Block
PHP class بيجهّز البيانات اللي الـ template هيعرضها. الـ Layout XML بيربط كل block بـ template، والـ template بيوصل له عن طريق المتغيّر $block.
اتشرح في درس: الـ Frontend بالتفصيل
C
- Canonical Tag
tag في الـ head بيحدّد الرابط الأصلي لمحتوى موجود على أكتر من رابط. Magento 2 بيطلّعه للمنتجات والـ categories بعد تفعيل إعداده من الأدمن.
اتشرح في درس: الـ SEO في Magento- Collection
class بيجيب مجموعة صفوف من جدول ويسمحلك تضيف فلاتر وترتيب وحدود قبل ما الـ query يتنفّذ. الـ query مابيتنفّذش إلا لما تحتاج البيانات فعلًا (lazy loading).
اتشرح في درس: بناء Entity من الصفر- Cron
جدولة المهام الدورية في Magento 2، زي تحديث الـ indexers وإرسال الإيميلات وتوليد الـ sitemap. المهام بتتعرّف في crontab.xml، ومحتاجة cron job على السيرفر بينادي bin/magento cron:run.
اتشرح في درس: قاعدة البيانات والأداء
D
- Data Patch
class بينفّذ تعديل بيانات مرة واحدة، زي إضافة attribute أو بيانات افتراضية. Magento بيسجّل الـ patches اللي اتطبّقت في جدول patch_list عشان ماتتنفّذش تاني.
اتشرح في درس: قاعدة البيانات والأداء- Declarative Schema
طريقة تعريف جداول قاعدة البيانات في ملف etc/db_schema.xml بدل install scripts. بتوصف الشكل اللي عايزه للجدول، وأمر setup:upgrade بيطبّق الفرق.
اتشرح في درس: بناء Entity من الصفر- Dependency Injection
نمط تصميم بياخد فيه الـ class الـ objects اللي محتاجها من الـ constructor بدل ما يعملها بنفسه. في Magento 2 الـ Object Manager بيجهّز الـ dependencies دي حسب إعدادات di.xml.
اتشرح في درس: أساسيات Magento بالتفصيل- Deploy Mode
وضع تشغيل Magento: default أو developer أو production. الـ production هو الأسرع وبيقدّم ملفات static و generated متجهّزة مسبقًا، وبيتغيّر بأمر bin/magento deploy:mode:set.
اتشرح في درس: الـ SEO في Magento- di.xml
ملف إعدادات الـ Dependency Injection في الموديول. بيعرّف الـ preferences والـ plugins والـ virtual types والـ arguments اللي بتتحقن في الـ constructors، ومكانه etc/ أو مجلد area زي etc/frontend/.
اتشرح في درس: أساسيات Magento بالتفصيل
E
- EAV
Entity-Attribute-Value: نموذج تخزين بيحفظ قيمة كل attribute في صف منفصل بدل عمود لكل attribute. Magento 2 بيستخدمه للمنتجات والـ categories والعملاء عشان تقدر تضيف attributes من غير ما تغيّر شكل الجداول.
اتشرح في درس: أساسيات Magento بالتفصيل
F
- Factory
class بيتولّد تلقائيًا لإنشاء objects جديدة من نوع معيّن، زي ProductFactory::create(). بتستخدمه لما تحتاج instance جديد كل مرة بدل الـ instance المشترك اللي بيتحقن افتراضيًا.
اتشرح في درس: أساسيات Magento بالتفصيل- Full Page Cache
كاش بيحفظ الصفحة كاملة كـ HTML عشان الطلبات الجاية تتقدّم من غير ما Magento يبنيها من الأول. في الـ production المُوصى بيه Varnish بدل الكاش المدمج.
اتشرح في درس: قاعدة البيانات والأداء
G
- GraphQL Resolver
class بينفّذ ResolverInterface وبيرجّع بيانات field أو query في GraphQL. بيتربط بالـ schema في ملف schema.graphqls عن طريق @resolver.
اتشرح في درس: GraphQL كامل
I
- Indexer
عملية بتحوّل بيانات متفرّقة، زي الأسعار والمخزون وخصائص EAV، لجداول مجهّزة للقراءة السريعة في الـ storefront. بتشتغل في وضع Update on Save أو Update by Schedule.
اتشرح في درس: الـ Indexers
K
- Knockout.js
مكتبة JavaScript بتربط البيانات بالواجهة تلقائيًا (data binding). Magento 2 بيستخدمها في الـ checkout والـ minicart والـ UI Components.
اتشرح في درس: الـ Checkout
L
- Layout Handle
اسم بيحدّد أنهي ملفات layout تنطبق على صفحة معيّنة، وبيساوي اسم الملف، زي catalog_product_view لصفحة المنتج و default لكل الصفحات.
اتشرح في درس: الـ Frontend بالتفصيل- Layout XML
ملفات XML بتحدّد بنية الصفحة: أنهي blocks و containers تظهر، فين، وبأي ترتيب. Magento بيدمج ملفات الـ layout من كل الـ modules والـ theme المفعّل.
اتشرح في درس: الـ Frontend بالتفصيل
M
- Message Queue Framework
طبقة في Magento بتبعت رسائل من publisher لـ consumer بيعالجها في الخلفية. بتشتغل مع RabbitMQ (AMQP) أو مع adapter مبني على MySQL، وبتتعرّف بملفات XML في etc/.
اتشرح في درس: RabbitMQ — موديول شغّال- Module
الوحدة الأساسية لأي feature في Magento 2: مجلد فيه كود وإعدادات وملفات واجهة، بيتسجّل بـ registration.php ويتعرّف في etc/module.xml، وممكن يتفعّل أو يتقفل لوحده.
اتشرح في درس: هيكل الـ Module- MSI
Multi-Source Inventory: نظام المخزون في Magento 2 اللي بيدعم أكتر من مصدر مخزون زي المخازن والفروع، وبيحسب الكمية المتاحة للبيع باستخدام الـ stocks والـ reservations.
اتشرح في درس: التكامل مع POS- MView
آلية Materialized View في Magento: database triggers بتسجّل الصفوف المتغيّرة في جداول changelog، عشان الـ indexers اللي على Update by Schedule يعالجوا الصفوف دي بس بالـ cron.
اتشرح في درس: الـ Indexers
O
- Object Manager
الـ component اللي بيعمل الـ objects في Magento 2 وبيحقن الـ dependencies بتاعتها. المفروض كود الموديولات مايناديهوش مباشرة، وبدل كده بيطلب اللي محتاجه في الـ constructor.
اتشرح في درس: أساسيات Magento بالتفصيل- Observer
class بينفّذ كود لما event معيّن يحصل، زي حفظ منتج أو إنشاء طلب. بيتسجّل في events.xml على اسم الـ event، وبيمشي بنمط publish/subscribe.
اتشرح في درس: أساسيات Magento بالتفصيل
P
- Plugin (Interceptor)
class بيعدّل سلوك public method في class تاني من غير ما يعدّل كوده، عن طريق methods من نوع before أو after أو around. بيتسجّل في di.xml، وأكتر من plugin يقدروا يشتغلوا على نفس الـ method.
اتشرح في درس: أساسيات Magento بالتفصيل- Preference
إعداد في di.xml بيقول لـ Magento يستخدم class معيّن بدل interface أو class تاني. بيستبدل التنفيذ بالكامل، ولو أكتر من module عملوا preference لنفس النوع واحد بس بيتطبّق.
اتشرح في درس: مواضيع متقدّمة- Proxy
class بيتولّد تلقائيًا وبيأجّل إنشاء الـ object الحقيقي لحد أول استخدام. بيتظبط في di.xml عشان dependency تقيلة ماتتعملش إلا لو احتجتها فعلًا.
اتشرح في درس: أساسيات Magento بالتفصيل
Q
- Quote
السلة المؤقتة في Magento: فيها المنتجات والعناوين وطريقة الشحن والدفع والإجماليات أثناء الـ checkout، ولما العميل يأكّد الطلب بياناتها بتتحوّل لـ order.
اتشرح في درس: الـ Checkout
R
- Redis
مخزن بيانات في الذاكرة. Magento 2 يقدر يستخدمه كـ backend للكاش ولتخزين الـ sessions، وده بيقلّل الضغط على قاعدة البيانات ونظام الملفات.
اتشرح في درس: Redis و RabbitMQ و Indexing- Repository
class بيقدّم عمليات الحفظ والقراءة والمسح والبحث لنوع بيانات معيّن (save و getById و getList و delete)، ومخبّي تفاصيل الـ ResourceModel والـ Collection ورا interface ثابت.
اتشرح في درس: بناء Entity من الصفر- RequireJS
مكتبة بتحمّل الـ JavaScript كـ modules وبتدير الاعتماديات بينها. في Magento 2 بتتظبط من requirejs-config.js، وبتتنادى من الـ templates بـ x-magento-init أو data-mage-init.
اتشرح في درس: الـ Frontend بالتفصيل
S
- Service Contract
مجموعة PHP interfaces (Data interfaces و Repository أو Service interfaces) بتعرّف الـ API الرسمي للموديول. باقي الموديولات والـ REST API بيعتمدوا عليها بدل التفاصيل الداخلية.
اتشرح في درس: أساسيات Magento بالتفصيل- Static Content Deploy
أمر setup:static-content:deploy اللي بينشر ملفات CSS و JS والصور وملفات الترجمة في pub/static لكل theme ولغة. في الـ production لازم يتشغّل بعد أي تعديل في الواجهة.
اتشرح في درس: الـ Frontend بالتفصيل- Store View
أقل مستوى في هرم المتجر، وغالبًا بيمثّل لغة. بيتحكّم في الترجمة وفي القيم اللي على مستوى الـ store view زي أسماء المنتجات والـ meta.
اتشرح في درس: Website و Store و Store View
U
- UI Component
مكوّنات واجهة معرّفة في XML ومدعومة بـ JavaScript، زي grids و forms الأدمن وخطوات الـ checkout. بتاخد بياناتها من data provider.
اتشرح في درس: لوحة الأدمن و UI Components- URL Rewrite
سجل في جدول url_rewrite بيربط رابط مقروء زي /iphone-15.html بالمسار الداخلي، وممكن يكون redirect بـ 301 أو 302. بيتعمل تلقائيًا للمنتجات والـ categories أو يدويًا من الأدمن.
اتشرح في درس: الـ SEO في Magento
V
- Varnish
HTTP reverse proxy بيقدّم الصفحات المتخزّنة قبل ما الطلب يوصل لـ PHP. Magento بيقدر يولّد ملف إعداداته (VCL)، وAdobe بتوصي بيه للـ Full Page Cache في الـ production.
اتشرح في درس: الـ SEO في Magento
W
- webapi.xml
ملف بيربط URL و HTTP method بـ method في service contract، وبيحدّد الصلاحية المطلوبة، فـ Magento يعمل REST endpoint من غير ما تكتب controller.
اتشرح في درس: REST API كامل- Website
أعلى مستوى في هرم المتجر تحت الـ Global. بيجمع stores ليها نفس إعدادات الدفع والشحن، ومعاه تقدر تفصل حسابات العملاء والأسعار لو ظبطت الإعدادات كده.
اتشرح في درس: Website و Store و Store View