הגדרת Sections ו-Entry Types ב-Craft CMS: מדריך לארכיטקטורת תוכן

מבנה תוכן ב-Craft CMS הופך פעמים רבות למקור לעבודה חוזרת: בחירה שגויה של Section או Entry Type מובילה למיגרציות מורכבות ולבעיות URL. אנחנו מגדירים את ארכיטקטורת התוכן תוך התחשבות בכל הניואנסים של הפרויקט שלכם כדי להימנע מסיכונים כאלה. הצוות שלנו מספק פרויקט סוהר—מעיצוב ועד תמיכה שוטפת—ומבטיח פתרון אמין ובר-הרחבה.

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

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

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

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

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

שאלות נפוצות

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

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

הגדרנו ארכיטקטורת תוכן לעשרות פרויקטים על Craft CMS ואנחנו יודעים איך להימנע מעבודה חוזרת. בחירה בסוג Section או Entry Type שגוי מובילה לצורך בביצוע מחדש של מבנה ה-URL, התבניות והמיגרציות חודש לאחר מכן. לדוגמה, אם תבחרו בתחילה ב-Channel עבור קטלוג מוצרים, אבל מאוחר יותר תצטרכו היררכיה (קטגוריות בעומק 3 רמות), תצטרכו לשנות את הסוג ל-Structure, להעביר את כל הערכים ולהגדיר הפניות מכתובות URL ישנות לחדשות. זה אומר שעות של עבודה וסיכונים ל-SEO. הבנת ההבדלים בין סוגי Sections מקצרת את זמן התכנון ומפשטת את התחזוקה.

פנו אלינו — אנו מבטיחים הגדרה נכונה תוך התחשבות בכל הניואנסים של הפרויקט שלכם.

סוגי Sections

סוג Section מאפיינים דוגמאות שימוש
Channel אוסף של ערכים ללא היררכיה בלוג, חדשות, ביקורות
Structure עמודים היררכיים עם מיון ידני תיעוד, קטלוג עם תת-קטגוריות
Single ערך יחיד וייחודי, ללא slug עמוד הבית, אודות, צור קשר

Channel — אוסף של ערכים ללא היררכיה. בלוג, חדשות, מוצרים, רשימות משרות. תבנית URL: /blog/{slug}. אידיאלי עבור פיד של תוכן הומוגני. ניתן להשתמש בסוגי Entry Types שונים בתוכו — למשל, עבור מאמרים ופודקאסטים.

Structure — עמודים היררכיים עם קינון ומיון ידני. תיעוד, קטלוג עם תת-קטגוריות. URL: /services/web-development/landing-pages. Structure עדיף על Channel כאשר יש צורך בקינון — למשל, עבור קטלוג מוצרים עם תת-קטגוריות עד 3 רמות עומק. עם זאת, שאילתות לעץ יכולות להפוך לצוואר בקבוק — השתמשו ב-caching או ב-level() ב-Twig כדי להגביל את קבוצת השאילתות.

Single — ערך יחיד וייחודי. עמוד הבית, אודות, צור קשר. ללא slug, ללא ארכיון. השתמשו עבור עמודים סטטיים. שימו לב: אם אתם צריכים גרסאות מרובות (למשל, עמוד עבור כל אתר במצב multisite), השתמשו ב-Structure Section עם ערך אחד — זה נותן גמישות רבה יותר.

איך לבחור סוג Section?

הבחירה תלויה באופי התוכן. עבור אוספים שטוחים השתמשו ב-Channel, עבור היררכיות ב-Structure, ועבור עמודים ייחודיים ב-Single. אם אינכם בטוחים, התחילו עם Channel — זו האפשרות הגמישה ביותר וניתן להרחיב אותה בקלות מאוחר יותר. אבל זכרו: מעבר מ-Channel ל-Structure הוא עתיר עבודה, ולכן עדיף לחשוב מראש על סיבוכים מבניים אפשריים.

מהם Entry Types ואיך להגדיר אותם?

כל Section יכול לכלול מספר Entry Types עם קבוצות שדות שונות. זה מאפשר ניהול גמיש של פורמטי תוכן שונים באותו section. דוגמה עבור Blog Section:

Section: blog (Channel)
├── Entry Type: article
│   └── Fields: body (Matrix), readingTime (calculated), podcast (false)
├── Entry Type: podcast
│   └── Fields: audioFile (Asset), transcript (Redactor), duration (Number)
└── Entry Type: video
    └── Fields: videoUrl (URL), thumbnail (Asset), youtubeId (computed)

ב-Twig, הבדילו את התצוגה לפי סוג:

{% switch entry.type.handle %}
    {% case 'article' %}
        {% include '_blog/_article' %}
    {% case 'podcast' %}
        {% include '_blog/_podcast' %}
    {% case 'video' %}
        {% include '_blog/_video' %}
{% endswitch %}

איך להגדיר Project Config עבור Sections?

השתמשו בקבצי YAML להגדרת sections — זה מפשט את הפריסה ואת ניהול הגרסאות. עיינו בתיעוד הרשמי על Project Config. דוגמה עבור בלוג:

---
# config/project/sections/blog.yaml
name: Blog
handle: blog
type: channel
enableVersioning: true
defaultPlacement: end
propagationMethod: all
siteSettings:
  default:
    hasUrls: true
    uriFormat: 'blog/{slug}'
    template: blog/_entry
    enabledByDefault: true
entryTypes:
  article:
    name: Article
    handle: article
    hasTitleField: true
    titleTranslationMethod: site
    fieldLayout:
      - type: craft\fieldlayoutelements\TitleField
      - type: craft\fieldlayoutelements\CustomField
        fieldUid: [uid-of-body-field]
      - type: craft\fieldlayoutelements\CustomField
        fieldUid: [uid-of-categories-field]
---

איך להגדיר Structure עם קינון?

עבור Structure, ציינו Section: blog (Channel) ├── Entry Type: article │ └── Fields: body (Matrix), readingTime (calculated), podcast (false) ├── Entry Type: podcast │ └── Fields: audioFile (Asset), transcript (Redactor), duration (Number) └── Entry Type: video └── Fields: videoUrl (URL), thumbnail (Asset), youtubeId (computed) כדי להגביל את העומק. לדוגמה, עבור קטלוג תלת-רמתי:

Section: services (Structure)
├── maxLevels: 3
├── enableVersioning: true
└── defaultSort: structure (ручная сортировка в дереве)

שאילתת אלמנטים ילדים:

{# Получить всех потомков текущей страницы #}
{% set children = craft.entries()
    .section('services')
    .descendantOf(entry)
    .level(entry.level + 1)
    .orderBy('lft asc')
    .all() %}

איך להגדיר תרגומים עבור Sections?

במצב multisite, חשוב להגדיר נכון את translationMethod:

שיטה תיאור דוגמה
none ערך זהה לכל האתרים שם מותג
site ערך שונה לכל אתר שם מוצר
language ערך שונה לכל שפה טקסט בשפה
siteGroup ערך שונה לכל קבוצת אתרים הגדרות אזוריות

בחירת השיטה תלויה בתרחיש. לדוגמה, עבור שדה "שם מוצר", השתמשו ב-{% switch entry.type.handle %} {% case 'article' %} {% include '_blog/_article' %} {% case 'podcast' %} {% include '_blog/_podcast' %} {% case 'video' %} {% include '_blog/_video' %} {% endswitch %} אם המוצר מתורגם, או ב-# config/project/sections/blog.yaml name: Blog handle: blog type: channel enableVersioning: true defaultPlacement: end propagationMethod: all siteSettings: default: hasUrls: true uriFormat: 'blog/{slug}' template: blog/_entry enabledByDefault: true entryTypes: article: name: Article handle: article hasTitleField: true titleTranslationMethod: site fieldLayout: - type: craft\fieldlayoutelements\TitleField - type: craft\fieldlayoutelements\CustomField fieldUid: [uid-of-body-field] - type: craft\fieldlayoutelements\CustomField fieldUid: [uid-of-categories-field] אם השם משותף לכל השפות.

טיפ מעשי: caching למבנה כדי להימנע משאילתות N+1 בעת רינדור העץ, השתמשו ב-maxLevels או טענו מראש ערכים עם Section: services (Structure) ├── maxLevels: 3 ├── enableVersioning: true └── defaultSort: structure (ручная сортировка в дереве) . עבור קטלוגים גדולים (1000+ ערכים), שקלו Elasticsearch או Meilisearch לחיפוש טקסט מלא.

למה להזמין אצלנו הגדרת Sections?

הניסיון שלנו — 5+ שנים בפיתוח על Craft CMS, מעל 50 פרויקטים מוצלחים. אנו משתמשים בתצורות מוכחות, מבטיחים יציבות וביצועים. הגדרה של 5–8 Sections עם Entry Types אורכת 1–2 ימים. עבור ארכיטקטורת תוכן מורכבת, פנו אלינו — נבחן את הפרויקט שלכם תוך יום אחד.

מה כלול בהגדרה?

  • פיתוח ארכיטקטורת Sections ו-Entry Types
  • הגדרת Project Config (YAML)
  • הגדרת שדות ותרגומים
  • יצירת תבניות תצוגה בסיסיות
  • תיעוד מבנה התוכן
  • תמיכה לאחר השקה

קבלו ייעוץ לפרויקט שלכם — נבחר את הארכיטקטורה האופטימלית.