פיתוח ערכת נושא מותאמת אישית ל-Magento 2
בעת פיתוח ערכת נושא מותאמת אישית ל-Magento 2, בעיה אופיינית היא אי-הבנה של שרשרת הירושה ו-Layout XML. לקוחות מביאים מוקאפים מעוצבים ב-Figma, ואנחנו נתקלים בשגיאות כמו Block not found או סדר אלמנטים שגוי. פעם, לקוח איבד יומיים בגלל ערכת נושא אב שהוגדרה בצורה שגויה ב-theme.xml — נאלצנו לשכתב את כל ה-overrides. בואו נפרק כיצד לבנות ערכת נושא שלא מפגרת וקלה לתחזוקה, עם דגש על גישות מודרניות כמו Hyva Themes.
למהנדסים שלנו יש ניסיון של 10+ שנים עם Magento ולמעלה מ-120 פרויקטים שהושלמו. אנחנו עובדים עם Luma, Blank ו-Hyva. זה מאפשר לנו לבחור את הסטack האופטימלי לכל פרויקט, בין אם זה פורטל ארגוני או חנות מסחר אלקטרוני בעומס גבוה. צרו קשר כדי להעריך את הפרויקט שלכם — נכין הצעה מסחרית תוך 1–2 ימים.
ארגון קבצי ערכת הנושא
ערכת נושא מותאמת אישית אינה מעתיקה את הבסיס במלואו. היא עוקפת רק את הקבצים הנחוצים. שרשרת הירושה:
Magento/blank └── Magento/luma └── MyCompany/mytheme במהלך ה-rendering, Magento מחפש תבניות תחילה בערכת הנושא המותאמת אישית, ואז עולה בשרשרת. זה מאפשר ביצוע שינויים ממוקדים מבלי לשכפל את כל הקוד.
דוגמה למבנה מינימלי:
app/design/frontend/MyCompany/mytheme/
├── etc/
│ └── view.xml
├── registration.php
├── theme.xml
└── web/
├── css/
│ └── source/
│ ├── _theme.less
│ └── _extend.less
└── js/
└── theme.jstheme.xml:
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>MyCompany Theme</title>
<parent>Magento/luma</parent>
<media>
<preview_image>media/preview.jpg</preview_image>
</media>
</theme>registration.php:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME,
'frontend/MyCompany/mytheme',
__DIR__
);
כיצד Layout XML שולט בעמוד?
Layout XML הוא הבסיס ל-rendering. הוא קובע אילו בלוקים ומכולות נמצאים בעמוד, סדרם ותבניותיהם. ללא קובץ זה, לא ניתן לשנות מיקומי אלמנטים. התחביר המפורט נמצא בתיעוד Magento.
סוגי קבצי layout:
| Handle | מטרה |
|---|---|
Magento/blank └── Magento/luma └── MyCompany/mytheme |
שינויים גלובליים |
app/design/frontend/MyCompany/mytheme/ ├── etc/ │ └── view.xml ├── registration.php ├── theme.xml └── web/ ├── css/ │ └── source/ │ ├── _theme.less │ └── _extend.less └── js/ └── theme.js |
עמוד מוצר |
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd"> <title>MyCompany Theme</title> <parent>Magento/luma</parent> <media> <preview_image>media/preview.jpg</preview_image> </media> </theme> |
עמוד קטגוריה |
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::THEME, 'frontend/MyCompany/mytheme', __DIR__ ); |
עגלת קניות |
דוגמה — הוספת בלוק אחריות לעמוד המוצר:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="product.info.main">
<block class="MyCompany\Catalog\Block\Product\Warranty" name="product.warranty.info" template="MyCompany_Catalog::product/warranty.phtml" after="product.info.price"/>
</referenceContainer>
</body>
</page> למה Hyva במקום Luma?
Hyva Themes הוא סטack מודרני: Tailwind CSS + Alpine.js + server-side rendering. הוא מחליף את RequireJS, KnockoutJS ו-Less המסורבלים. פיתוח ערכת נושא ב-Hyva מהיר פי 2–3 מאשר ב-Luma, והתוצאה היא Lighthouse 90+ מהקופסה. הפחתת זמן הטעינה יכולה להגיע ל-30%, וביצועי Lighthouse הממוצעים הם 95. Hyva משתמש ברישיון מסחרי, אך הוא משתלם באמצעות חיסכון בתקציב של עד 40% והפחתת זמן ROI ל-6 חודשים.
השוואה בין Luma ל-Hyva:
| פרמטר | Luma/Blank | Hyva |
|---|---|---|
| סטack | RequireJS, KnockoutJS, Less | Alpine.js, Tailwind CSS |
| מהירות פיתוח | 6–8 שבועות עבור 10–20 עמודים | 3–5 שבועות עבור אותה מורכבות |
| ביצועים | דורש אופטימיזציה | Lighthouse 90+ מהקופסה |
| עקומת למידה | גבוהה (Layout XML, Knockout) | נמוכה (HTML+CSS+JS) |
| עלות רישיון | חינם | מסחרי (בפנייה) |
היקף העבודה לערכת נושא מותאמת אישית
- מבנה ערכת נושא: שרשרת ירושה נכונה, registration.php, theme.xml.
- Layout XML: יצירה והגדרה של כל קבצי ה-layout הנחוצים למבנה החנות.
- תבניות PHTML: עקיפת תבניות מודולים (Magento_Catalog, Magento_Checkout וכו').
- Less/CSS: התאמת סגנונות דרך _theme.less ו-_extend.less, יצירת CSS באמצעות
default.xml. - JavaScript: הגדרת RequireJS (או Alpine.js עבור Hyva), רכיבי JS מותאמים אישית.
- הגדרת תמונות: view.xml עם גדלים ואופטימיזציית מטמון.
- עיצוב רספונסיבי: בדיקות במובייל, טאבלט ומחשב שולחני.
- אינטגרציית מודולים חיצוניים: חיבור OneStepCheckout, Amasty, Mirasvit וכו'.
- אופטימיזציית Core Web Vitals: LCP, CLS, INP — השגת ציונים ירוקים.
- תיעוד: תיאור מבנה ערכת הנושא, הוראות פריסה.
- הדרכה: מפגש למפתחי הלקוח (1–2 שעות אונליין).
- תמיכה: שבועיים של תמיכה לאחר השחרור לתיקון באגים והתאמות קטנות.
תהליך העבודה על ערכת נושא
- ניתוח מוקאפים — לימוד אבות טיפוס עיצוביים, זיהוי אתגרים טכניים. לעיתים קרובות אנו מוצאים אי-התאמות בין העיצוב ליכולות Magento בשלב זה.
- תכנון מבנה — קביעת שרשרת הירושה, קבצי layout ותבניות הנדרשות.
- פיתוח רכיבים — יצירת PHTML, Less, JS, הגדרות view.xml. כל רכיב נבדק בנפרד.
- אינטגרציית תוספים — חיבור OneStepCheckout, Amasty, Mirasvit. בדיקת תאימות לערכת הנושא.
- בדיקות — אימות בכל סוגי העמודים, מדידת Core Web Vitals באמצעות Lighthouse ו-PageSpeed Insights.
-
פריסת תוכן סטטי —
catalog_product_view.xml. - שחרור ותמיכה — העברת ערכת הנושא ללקוח, תיעוד, הדרכה.
לוח זמנים ועלות
לוח זמנים לפיתוח: מ-3 שבועות (Hyva) עד 8 שבועות (Luma). המחיר מחושב באופן אישי לאחר ניתוח המוקאפים. הערכה — צרו קשר.
הזמינו פיתוח ערכת נושא, ואנו נבחר את הסטack האופטימלי עבור הפרויקט שלכם.







