אוספים מותאמים אישית וסינגלטונים ב-Cockpit CMS
קיבלנו בקשה: "אנחנו צריכים פאנל ניהול שבו מנהל מוסיף מוצרים, וכרטיסים עם תמונות, קטגוריות ומאפיינים מופיעים באתר. בלי פאנל ניהול, היינו צריכים לכתוב REST API מאפס." Cockpit CMS פותר את זה בשעה: צרו אוסף "מוצרים" עם שדות (כותרת, מחיר, תמונה), קשרו קטגוריות דרך collectionlink, והשתמשו ב-repeater למאפיינים. נקודת קצה JSON מוכנה מופיעה מיד — הפרונטאנד מביא נתונים דרך בקשת GET. השתמשנו ב-Cockpit CMS ביותר מ-50 פרויקטים headless — המערכת ה-headless הזו נותנת גמישות דרך Collections ו-Singletons. תוך 4–8 שעות הגדרנו מבנה, שדות, קשרים והרשאות גישה, בעוד שעורכים מקבלים ממשק אינטואיטיבי בלי קוד נוסף. הניסיון שלנו: 5 שנים בשוק, מעל 50 פרויקטים על Cockpit. בהשוואה לבניית פאנל ניהול מותאם אישית מאפס, חוסכים עד 60% זמן ועד 50% תקציב. החל מ-$500 להגדרה בסיסית.
אילו בעיות אנחנו פותרים עם אוספים?
נקודת הכאב האופיינית היא יצירה ידנית של API לניהול תוכן. Cockpit מייצר אוטומטית נקודות קצה REST עבור כל אוסף. הבעיה השנייה היא מורכבות הקשרים בין ישויות. ב-Cockpit, קשרים מוגדרים דרך סוג השדה collectionlink בלי שאילתות SQL. השלישית היא הצורך בשליטה בגישה. Cockpit תומך בתפקידים: מנהל, עורך, מנהל תוכן. ב-80% מהפרויקטים אנחנו משתמשים בקשרים בין 3–5 אוספים.
איך ליצור אוסף דרך API?
ניתן ליצור אוספים דרך ממשק הניהול או תוכניתית דרך REST API. הנה דוגמה לאוסף "מוצרים":
$collection = [
'name' => 'products',
'label' => 'Товары',
'fields' => [
['name' => 'title', 'type' => 'text', 'required' => true, 'label' => 'Название'],
['name' => 'slug', 'type' => 'text', 'required' => true, 'slug' => true],
['name' => 'description', 'type' => 'wysiwyg', 'label' => 'Описание'],
['name' => 'price', 'type' => 'number', 'label' => 'Цена'],
['name' => 'image', 'type' => 'asset', 'label' => 'Фото'],
['name' => 'gallery', 'type' => 'gallery', 'label' => 'Галерея'],
['name' => 'category', 'type' => 'collectionlink', 'link' => 'categories'],
['name' => 'published', 'type' => 'boolean', 'default' => false],
['name' => 'publishedAt', 'type' => 'date'],
],
'sortable' => true,
'in_menu' => true,
];
לאחר מכן, בקשת POST יוצרת את האוסף ב-Cockpit. הרשומות נגישות מיד דרך API או פאנל הניהול. כל התהליך לוקח 5–10 דקות. כפי שמופיע בתיעוד הרשמי של Cockpit CMS: מאגר GitHub של Cockpit, ה-API הוא RESTful לחלוטין.
סוגי שדות ב-Cockpit
Cockpit תומך ביותר מ-20 סוגי שדות. הנה העיקריים:
| סוג | תיאור | דוגמה לשימוש |
|---|---|---|
$collection = [ 'name' => 'products', 'label' => 'Товары', 'fields' => [ ['name' => 'title', 'type' => 'text', 'required' => true, 'label' => 'Название'], ['name' => 'slug', 'type' => 'text', 'required' => true, 'slug' => true], ['name' => 'description', 'type' => 'wysiwyg', 'label' => 'Описание'], ['name' => 'price', 'type' => 'number', 'label' => 'Цена'], ['name' => 'image', 'type' => 'asset', 'label' => 'Фото'], ['name' => 'gallery', 'type' => 'gallery', 'label' => 'Галерея'], ['name' => 'category', 'type' => 'collectionlink', 'link' => 'categories'], ['name' => 'published', 'type' => 'boolean', 'default' => false], ['name' => 'publishedAt', 'type' => 'date'], ], 'sortable' => true, 'in_menu' => true, ]; |
מחרוזת עד 255 תווים | שם מוצר |
text |
טקסט רב-שורתי | תיאור מאמר |
textarea |
עורך טקסט עשיר (TinyMCE) | תוכן פוסט |
wysiwyg |
Markdown | תיעוד טכני |
markdown |
מספר (int/float) | מחיר, משקל |
number |
מתג כן/לא | פורסם |
boolean |
רשימה נפתחת | קטגוריית מוצר |
select |
קובץ/תמונה בודד | תמונה ראשית |
asset |
גלריית תמונות | תמונות מוצר |
gallery / date |
תאריך/שעה | תאריך פרסום |
time |
בוחר צבעים | צבע רקע |
color |
קישור לרשומה מאוסף אחר | פוסט קשור |
collectionlink |
קבוצות שדות הניתנות לחזרה | בלוקי תכונות |
repeater |
בונה עמודים | עמוד הבית |
layout |
אובייקט JSON | הגדרות אינטגרציה |
object |
תגיות (מערך מחרוזות) | תגיות חיפוש |
tags |
קבוצת שדות לשימוש חוזר | פרטי יצירת קשר |
ניתן לשלב שדות בכל סדר. לקשרים בין אוספים אנחנו משתמשים ב-set — הוא מושך אוטומטית רשומות מהאוסף המקושר.
איך להגדיר קשרים בין אוספים?
קשרים בין אוספים מוגדרים דרך סוג השדה collectionlink. ציינו את אוסף היעד והאם ניתן לבחור מספר רשומות. Cockpit יוצר אוטומטית רשימה נפתחת עם חיפוש. לדוגמה, מוצר יכול לבחור קטגוריה מהאוסף collectionlink. זה מקביל למפתח זר במסדי נתונים יחסיים אבל בלי SQL.
Collection לעומת Singleton: מתי להשתמש במה?
| קריטריון | Collection | Singleton |
|---|---|---|
| מספר רשומות | רב (מאות/אלפים) | אחת |
| דוגמה | מאמרים, מוצרים, משתמשים | הגדרות אתר, SEO, אנשי קשר |
| נקודת קצה API | /api/collections/items/{id} | /api/singletons/{name} |
| הרשאות גישה | לפי רשומה | ברמת singleton |
Singletons נוחים להגדרות: תגיות SEO, אנשי קשר, מדיה חברתית, באנרים. דוגמה למבנה של singleton "עמוד הבית":
{
"fields": [
{
"name": "hero_title",
"type": "text"
},
{
"name": "hero_subtitle",
"type": "textarea"
},
{
"name": "hero_image",
"type": "asset"
},
{
"name": "featured_posts",
"type": "collectionlink",
"link": "posts",
"multiple": true
},
{
"name": "seo_title",
"type": "text"
},
{
"name": "seo_description",
"type": "textarea"
}
]
}העורך ממלא את השדות, והפרונטאנד מקבל JSON מוכן דרך API. אין צורך בלוגיקה נוספת.
שימוש ב-Repeater לבלוקי תוכן
Repeater מאפשר הוספת מספר בלתי מוגבל של בלוקים הניתנים לחזרה. לדוגמה, בלוק "תכונות":
{
"name": "features",
"type": "repeater",
"label": "Преимущества",
"fields": [
{
"name": "icon",
"type": "asset"
},
{
"name": "title",
"type": "text"
},
{
"name": "description",
"type": "textarea"
}
]
}בפאנל הניהול, העורך רואה כפתור "הוסף בלוק" — כל בלוק חדש מושך את אותם שדות. זה נוח יותר מאחסון HTML בשדה טקסט. אנחנו משתמשים ב-repeater ב-90% מהפרויקטים.
מה כלול בעבודה
- ניתוח מבנה נתונים — הגדרת אוספים, קשרים ושדות עבור הישויות העסקיות שלכם (2–4 שעות).
- יצירת סכמה — הגדרת אוספים, singletons והשדות שלהם דרך ממשק הניהול או API (4–8 שעות).
- הגדרת הרשאות גישה — הפרדת תפקידים (מנהל, עורך, מנהל תוכן) (1–2 שעות).
- תיעוד API — תיאור נקודות קצה עבור פרונטאנד או אינטגרציות (2–4 שעות).
- הדרכת צוות — הדגמה לשימוש בפאנל הניהול, הוספת רשומות ובלוקים (2–4 שעות).
- תמיכה לאחר השקה — תיקון באגים, התאמת שדות לפי צורך (עד 7 ימים).
איך אנחנו עובדים
- ניתוח — לימוד מבנה התוכן, איסוף דרישות.
- עיצוב — יצירת דיאגרמת ER של אוספים וקשרים.
- יישום — הגדרת Cockpit, כתיבת שדות/וולידטורים מותאמים אם נדרש.
- בדיקות — בדיקת תרחישים: יצירה, עריכה, מחיקת רשומות, הרשאות גישה.
- פריסה — פריסה על השרת, הגדרת גיבויים.
לוחות זמנים: מיום אחד עד שבועיים, תלוי במורכבות. המחיר מחושב באופן אישי. קבלו ייעוץ — המהנדסים שלנו יעזרו להעריך את הפרויקט ואת לוחות הזמנים. הזמינו הגדרת Cockpit CMS במפתח מוכן, קבלו פאנל ניהול מוכן בלי קוד נוסף. אנחנו מבטיחים תוצאות בזמן. כתבו לנו כדי להעריך את הפרויקט שלכם.







