פריסת רכיבים עם שדות מטריקס ב-Craft CMS: מדריך הגדרה

מפתחים נתקלים לעיתים קרובות בבעיות בהגדרת Matrix Field ב-Craft CMS: טעינת עמודים איטית ומבנה תוכן לא גמיש. אנו מגדירים Matrix Field עבור פריסות מבוססות רכיבים, ומעצבים בלוקים ידידותיים לעורכים ומותאמים לביצועים. הצוות שלנו מספק פרויקטים סוהריים—מביקורת מבנה ועד יישום ותמיכה שוטפת—המבטיחים פעילות יציבה ויכולת הרחבה.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
פריסת רכיבים עם שדות מטריקס ב-Craft CMS: מדריך הגדרה
בינוני
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

תצורת פריסת רכיבים עם שדות Matrix ב-Craft CMS: מדריך הגדרה

מפתחים נתקלים לעיתים קרובות במלכודות עם שדה Matrix ב-Craft CMS: או ששאילתות N+1 הורגות את השרת, או שעורכים מבקשים "עוד סוג בלוק אחד". בפרויקט אחד, עמוד "אודות" של לקוח הכיל 25 בלוקים, כל אחד עם תמונה. טעינת העמוד ארכה 8 שניות עקב 25 שאילתות מדיה נפרדות. לאחר הגדרה נכונה של טעינה מוקדמת (eager loading), הזמן ירד ל-1.2 שניות — שיפור של פי 6.7. עם יותר מ-50 פרויקטי Craft, חידדנו גישה שבה Matrix אינו מאט ולא מתסכל את הצוות.

כיצד לתכנן בלוקים כדי להימנע מעיצובים מחדש

באתר תאגידי טיפוסי, שדה ה-pageBody מכיל 6–10 סוגי בלוקים. כל בלוק הוא מיקרו-מבנה: טקסט, תמונה, קישור, ציטוט, קוד, סטטיסטיקות. קריטי לתכנן את מערך השדות — הוספת שדה מאוחר יותר קשה יותר מהסרת אחד. המבנה האופטימלי לעמוד נחיתה:

pageBody (Matrix)
├── hero
│   ├── heading, subheading, backgroundImage, ctaButton
├── richTextContent
│   └── content (Redactor)
├── imageWithCaption
│   ├── image, caption, alignment
├── twoColumns
│   ├── leftContent, rightContent (Redactor)
├── testimonial
│   ├── quote, author, role, avatar
├── stats
│   └── items (Table field внутри)
├── ctaBanner
│   ├── heading, text, buttonLabel, buttonUrl
└── codeSnippet
    ├── language, code

השתמשו בשדות Table לרשימות (סטטיסטיקות, מחירים) — הם מהירים יותר מ-Matrix מקונן וקל יותר לשמור אותם במטמון.

עיבוד Twig: switch לעומת include לעומת component

רוב הפרויקטים משתמשים ב-pageBody (Matrix) ├── hero │ ├── heading, subheading, backgroundImage, ctaButton ├── richTextContent │ └── content (Redactor) ├── imageWithCaption │ ├── image, caption, alignment ├── twoColumns │ ├── leftContent, rightContent (Redactor) ├── testimonial │ ├── quote, author, role, avatar ├── stats │ └── items (Table field внутри) ├── ctaBanner │ ├── heading, text, buttonLabel, buttonUrl └── codeSnippet ├── language, code בתוך לולאה — אמין וקריא. אבל עם 10+ בלוקים, התבנית הופכת מגושמת. חלופה היא לחלץ כל בלוק ל-include נפרד. זה מפשט את התחזוקה אך מעט איטי יותר עקב קריאות include מרובות. הגישה האופטימלית מעבדת בלוקים באמצעות גישת רכיבים עם מטמון מקטעים (fragment caching).

גישה מהירות יכולת תחזוקה מטמון
switch גבוהה נמוכה (מגושם) קל לשמור הכל במטמון
include בינונית גבוהה כל תבנית נשמרת בנפרד
components גבוהה גבוהה מטמון מקטעים

בניסיוננו, עמודים עם 15+ בלוקים מרוויחים 40–50 אלפיות השנייה על ידי הוספת תגי מטמון.

מדוע N+1 הורס ביצועים וכיצד להימנע מכך

ללא טעינה מוקדמת, כל בלוק עם שדה Assets יוצר שאילתה נפרדת. לדוגמה, בלוק תמונה מחפש את התמונה, בלוק המלצה מחפש את התמונה הממוזערת. אם לעמוד יש 10 בלוקים, מקבלים 10 שאילתות DB בתוספת שאילתת רשימת הבלוקים. הפתרון הוא קריאה אחת של {% switch %}: with().

עבור בלוקים המכילים Matrix מקונן (למשל, טאבים עם תוכן פנימי), השתמשו ב-{% set blocks = entry.pageBody.with(['image', 'avatar', 'backgroundImage']).all() %} — Craft תומך בטעינה מוקדמת עמוקה. פרטים מלאים בתיעוד הרשמי של Craft CMS.

מה לעשות אם Matrix מאט את לוח הבקרה

Matrix עם 50+ בלוקים בלוח הבקרה הוא סיוט נפוץ. הסיבה: כל בלוק מעבד את השדות שלו. הפתרון הוא לפצל את ה-Matrix למספר שדות: Matrix נפרד ל"כותרת עליונה", "גוף" ו"כותרת תחתונה". לחלופין, השתמשו ב-Neo Field של McDowell — תחליף התומך בקינון, בעלות של $99.

בחירת כלי: מתי להשתמש ב-Matrix, Neo, Table

קריטריון Matrix (מובנה) Neo (תוסף) שדה Table SuperTable (תוסף)
סוגי בלוקים כל סוג, סטטי כל סוג, מקונן סוג שורה יחיד סוג יחיד, שדות גמישים
ביצועי לוח בקרה בינוניים (20+ בלוקים) גרועים יותר (מורכב יותר) מצוינים טובים
קינון רק רמה אחת (דרך Table) רב-רמות אין רמה אחת
עלות חינם $99 חינם $59
מתאים ל בונה עמודים עם 5–10 בלוקים מבנים מורכבים (עיצוב אטומי) טבלאות, רשימות מחירים רשימות עם שדות משתנים

Matrix הוא הבחירה הטובה ביותר עבור 80% מהפרויקטים. Neo שווה רק עבור יותר משתי רמות קינון. Table ו-SuperTable מיועדים לנתונים טבלאיים.

אסטרטגיות מטמון בלוקים עבור Matrix

בלוקי Matrix שוברים את מטמון העמוד ללא אסטרטגיה. הפתרון הוא לשמור כל בלוק בנפרד עם תגים. ב-Twig:

{% cache globally using key 'block-' ~ block.id tags 'matrixBlock:' ~ block.id %}
    {% include 'matrix/_' ~ block.type.handle %}
{% endcache %}

כאשר בלוק משתנה, Craft מבטל רק את המטמון שלו. עבור בלוקים סטטיים (richText), שמרו במטמון ליום; עבור מדיה, לשעה.

דוגמה למבנה pageBody להתחלה מהירה
pageBody (Matrix):
  - hero (heading, subheading, backgroundImage, ctaButton)
  - richTextContent (content Redactor)
  - imageWithCaption (image, caption, alignment)
  - twoColumns (leftContent, rightContent Redactor)
  - testimonial (quote, author, role, avatar)
  - stats (items Table field)
  - ctaBanner (heading, text, buttonLabel, buttonUrl)
  - codeSnippet (language, code)

מערך זה מכסה 90% מהעמודים הטיפוסיים.

מה מקבלים מהגדרת Matrix נכונה

לאחר השלמת התהליך, תקבלו:

  • שדה Matrix מוגדר עם 5–8 סוגי בלוקים.
  • תבניות Twig התומכות בפריסות רספונסיביות (גרסת מובייל נקבעת דרך .with()['subMatrixField.childField'] במידת הצורך).
  • טעינה מוקדמת מוגדרת לכל שדות היחסיים (Assets, Categories, Entries).
  • תיעוד להוספת בלוקים חדשים והדרכת עורכים (שעה אחת).
  • הבטחת ביצועים: טעינת עמוד עם 10 בלוקים מתחת ל-1.5 שניות.

טעויות נפוצות ופתרונות

טעות פתרון
שימוש ב-Matrix לרשימות פשוטות השתמשו ב-Channel או Table
שכחת טעינה מוקדמת לתמונות הוסיפו {% cache globally using key 'block-' ~ block.id tags 'matrixBlock:' ~ block.id %} {% include 'matrix/_' ~ block.type.handle %} {% endcache %} לכל היחסים
יותר מדי סוגי בלוקים (מעל 10) הגבילו ל-5–8, העבירו בלוקים נדירים לשדה נפרד
לא הגדרתם pageBody (Matrix): - hero (heading, subheading, backgroundImage, ctaButton) - richTextContent (content Redactor) - imageWithCaption (image, caption, alignment) - twoColumns (leftContent, rightContent Redactor) - testimonial (quote, author, role, avatar) - stats (items Table field) - ctaBanner (heading, text, buttonLabel, buttonUrl) - codeSnippet (language, code) הגדירו מגבלה (למשל, 20)
אין מטמון מקטעים עטפו כל בלוק ב-craft.app.request.isMobile עם תג

מתי להימנע מ-Matrix

Matrix אינו נוח עבור:

  • אתרים עם סוג תוכן אחד (בלוג) — Rich Text מספיק.
  • אתרים עם רשת נוקשה (למשל, פורטפוליו) — עדיף לבנות דרך Entry Type.
  • פרויקטים בעומס גבוה (מיליוני בלוקים) — Matrix מתקשה להתרחב; שקלו Headless CMS או פתרונות מותאמים.

אחרת, זהו הכלי הסטנדרטי של Craft CMS, בשימוש ב-90% מהפרויקטים שלנו. לצוות שלנו יש 5+ שנות ניסיון ו-50+ פרויקטי Craft, מה שמבטיח הגדרת Matrix אופטימלית. כדי לזרז את הפרויקט שלכם, פנו אלינו לייעוץ.

הגדרת Matrix עם 5–8 סוגי בלוקים ותבניות אורכת 2–4 ימים. העלות תלויה במספר הסוגים ובמורכבות העיצוב, ונקבעת לאחר ניתוח.