לעתים קרובות אנו נתקלים במצב: לקוח מתלונן שסוגי התוכן הסטנדרטיים – 'מאמר' ו'דף בסיסי' – אינם מתאימים לקטלוג מוצרים עם עשרות מאפיינים. אחסון הכל בשדה גוף אחד מוביל לכאוס בעת הצגה. פיתוח סוגי תוכן מותאמים אישית של Drupal פותר זאת – אנו יוצרים ישויות עם סט ייחודי של שדות, טפסי עריכה ומצבי תצוגה. התצורה מיוצאת ל-YAML ונשמרת ב-git, מה שמבטיח שחזור ובקרת גרסאות. עם הפניות לישויות (entity reference) אנו מפחיתים כפילות נתונים וחוסכים עד 40% מזמן עדכון התוכן. למהנדסים שלנו יש ניסיון של 10+ שנים ב-Drupal והם סיפקו למעלה מ-50 פרויקטים עם סוגי תוכן מותאמים אישית. קבלו ייעוץ לעיצוב המבנה האידיאלי.
לפי התיעוד הרשמי של Drupal, "Entity API מספקת סט של מחלקות וממשקים לניהול ישויות."
כיצד אנו מעצבים סוגי תוכן מותאמים אישית של Drupal מקצה לקצה
ניקח מקרה אמיתי: פורטל משרות. יצרנו סוג משרה (Vacancy) עם שדות:
- עיר (מחרוזת, חובה)
- שכר מ- (מספר עשרוני)
- שכר עד (מספר עשרוני)
- כיוון (הפניה לישות לטקסונומיה)
- דרישות (טקסט ארוך)
הגדרנו את טופס העריכה: עיר כשדה טקסט, שכר כטווח, כיוון כתיבות סימון. לתצוגת טיזר, יצרנו כרטיס עם "עיר" ו"שכר מ-" בשורה אחת. כל התהליך – מממשק המשתמש ועד ייצוא התצורה – ארך חצי יום. אם נדרשים מספר סוגים עם קשרים (לדוגמה, מקרה → לקוח, מקרה → שירותים), הפיתוח יכול לקחת 1–2 ימים. אנו תמיד מפרטים את מבנה השדות בשלב הניתוח כדי להימנע משאילתות N+1. זה מפחית שגיאות בשאילתות ב-25% ומאיץ את טעינת הדפים ב-30%. שימוש בהפניות לישויות יכול לקצץ שאילתות מסד נתונים בעוד 50%.
// my_module.install
function my_module_install(): void {
$node_type = \Drupal\node\Entity\NodeType::create([
'type' => 'case',
'name' => 'Кейс',
'description' => 'Кейсы компании',
'display_submitted' => FALSE,
'new_revision' => TRUE,
]);
$node_type->save();
// Поле ссылки на клиента
$client_storage = \Drupal\field\Entity\FieldStorageConfig::create([
'field_name' => 'field_client',
'entity_type' => 'node',
'type' => 'entity_reference',
'settings' => ['target_type' => 'node'],
]);
$client_storage->save();
\Drupal\field\Entity\FieldConfig::create([
'field_storage' => $client_storage,
'bundle' => 'case',
'label' => 'Клиент',
'settings' => [
'handler' => 'default:node',
'handler_settings' => [
'target_bundles' => ['client' => 'client'],
],
],
])->save();
// Настройка формы отображения
\Drupal\Core\Entity\Entity\EntityFormDisplay::load('node.case.default')
->setComponent('field_client', [
'type' => 'entity_reference_autocomplete',
'weight' => 10,
])
->save();
} תרחישים הדורשים סוגי תוכן מותאמים אישית של Drupal
סוגים סטנדרטיים אינם מכסים את דרישות ההיגיון העסקי – לדוגמה, קטלוג מוצרים עם מאפיינים ייחודיים, פורטל עם ישויות שונות (משרות, קורות חיים, חברות), או אתר רב-לשוני עם סטי שדות משתנים. סוגי ישויות מותאמים אישית ב-Drupal נותנים לכם שליטה מלאה על המבנה: אתם מגדירים שדות, קשרים, תצוגות והרשאות. זה מבטל אחסון נתונים בשדה גוף אחד ומפשט את התחזוקה.
יצירה שלב אחר שלב של סוג תוכן מותאם אישית
כך אנו יוצרים סוג תוכן ב-Drupal מאפס:
- הגדרת שם מכונה ותווית. לדוגמה,
// my_module.install function my_module_install(): void { $node_type = \Drupal\node\Entity\NodeType::create([ 'type' => 'case', 'name' => 'Кейс', 'description' => 'Кейсы компании', 'display_submitted' => FALSE, 'new_revision' => TRUE, ]); $node_type->save(); // Поле ссылки на клиента $client_storage = \Drupal\field\Entity\FieldStorageConfig::create([ 'field_name' => 'field_client', 'entity_type' => 'node', 'type' => 'entity_reference', 'settings' => ['target_type' => 'node'], ]); $client_storage->save(); \Drupal\field\Entity\FieldConfig::create([ 'field_storage' => $client_storage, 'bundle' => 'case', 'label' => 'Клиент', 'settings' => [ 'handler' => 'default:node', 'handler_settings' => [ 'target_bundles' => ['client' => 'client'], ], ], ])->save(); // Настройка формы отображения \Drupal\Core\Entity\Entity\EntityFormDisplay::load('node.case.default') ->setComponent('field_client', [ 'type' => 'entity_reference_autocomplete', 'weight' => 10, ]) ->save(); }למקרים. - יצירת הסוג דרך ממשק המשתמש או קוד. ב-hook התקנה:
case. - הוספת שדות. דרך FieldStorageConfig ו-FieldConfig – טקסט, entity_reference, datetime וכו'.
- הגדרת תצוגות. EntityFormDisplay לטפסים, EntityViewDisplay לטיזר ומלא.
- ייצוא תצורה.
NodeType::create()– כל קבצי ה-YAML נכנסים ל-config/sync. - ביצוע commit ל-git. שחזור בכל הסביבות.
שדות טיפוסיים והתצורה שלהם – פיתוח סוגי תוכן מותאמים אישית
| מצב | סוג שדה | דוגמת תצורת YAML |
|---|---|---|
| טקסט קצר | drush cex |
string |
| טקסט ארוך/HTML | field_type: string |
text_long |
| מספר שלם | field_type: text_long |
integer |
| מספר עשרוני | field_type: integer |
decimal |
| תאריך | settings: { precision: 10, scale: 2 } |
datetime |
| הפניה לישות | field_type: datetime |
entity_reference |
| תמונה | settings: { target_type: node } |
image |
| קובץ | field_type: image |
file |
| בוליאני | field_type: file |
boolean |
| רשימה (בחירה) | field_type: boolean |
list_string |
מדוע הפניות לישויות עדיפות על שדות פשוטים?
שדות הפניה מאפשרים קישור ישויות ללא כפילות נתונים. לדוגמה, עבור סוג "מקרה" אנו יוצרים שדה "לקוח" (הפניה לישות לסוג לקוח) ושדה "שירותים" (הפניה מרובה לישות לסוג שירות). יתרונות:
- הנתונים מאוחסנים בישות אחת – עדכון פעם אחת.
- קל לבנות תצוגות (Views) עם קשרים.
- אין צורך לשכפל בחירות מרשימות נפתחות.
בתרחישים טיפוסיים (קשר מאמר-מחבר), הפניות לישויות מבטלות כפילות ומפשטות עדכונים. בפרויקט אחד, החלפנו 5 שדות טקסט בשדות הפניה, מה שקצץ את זמן עריכת התוכן ב-35% והפחית עלויות תחזוקה. שאילתות מסד הנתונים ירדו ב-30%, ומהירות טעינת הדפים השתפרה ב-40%. העלות לאותו פרויקט הייתה $2,500.
תהליך הפיתוח של סוגי תוכן מותאמים אישית
אנו פועלים לפי מתודולוגיה שקופה:
| שלב | משך | תוצאה |
|---|---|---|
| ניתוח ואיסוף דרישות | 1–2 ימים | מסמך עם מבנה סוגים ושדות |
| עיצוב (שדות, קשרים, תבניות) | 1–2 ימים | סכמת ישויות, אבות טיפוס לטפסים |
| יישום (ממשק משתמש + קוד) | 2–5 ימים | סוגים עובדים, תצורה ב-YAML |
| בדיקות וסקירה | יום אחד | בדיקת שדות, תצוגות, שגיאות |
| פריסה והדרכה | יום אחד | פריסת תצורה, הוראות לעורכים |
דוגמת מקרה מורכב
עבור פורטל עם 5 סוגי ישויות וקשרים מורכבים (מקרה → לקוח, מקרה → צוות, מקרה → ביקורות) עיצבנו ארכיטקטורה אחידה שהפחיתה את זמן היציאה לשוק בשבועיים. העלות הכוללת הייתה $8,000.מה כלול בעבודה
- פיתוח מספר סוגי התוכן המותאמים אישית הנדרשים.
- הגדרת כל סוגי השדות הדרושים (טקסט, entity_reference, datetime וכו').
- הגדרת טפסי עריכה ומצבי תצוגה (טיזר, ברירת מחדל).
- ייצוא תצורה ל-YAML ושילוב בתהליך הבנייה.
- כתיבת hooks התקנה לשחזור.
- תיעוד המבנה והדרכת עורכים.
- אחריות על קוד – 6 חודשי תמיכה.
לוח זמנים ועלות
העלות מחושבת באופן אישי, בהתאם למספר הסוגים ומורכבות השדות. לוח זמנים משוער: סוג פשוט אחד עם שדות ממשק משתמש – מיומיים ($500); מספר סוגים עם הפניות לישויות והגדרת תצוגות – מ-5 ימים ($1,500). הזמינו פיתוח סוגי תוכן מותאמים אישית של Drupal עכשיו – קבלו ייעוץ.
לפרטים נוספים על סוגי תוכן, קראו את התיעוד הרשמי של Drupal.







