Drupal Paragraphs: מה נשבר בעת עריכת תוכן
התמונה הקלאסית: כל העמוד נמצא בשדה טקסט אחד גדול, והמקטעים — באנר, בלוק עם מחירים, ביקורות, טופס — בנויים ישירות בתבנית.
אי אפשר לשנות את סדר המקטעים, להוסיף מקטע חדש או להרכיב דף נחיתה מבלוקים קיימים בלי מפתח: כל עריכה של תוכן הופכת למשימת ריליס — עריכת תבנית, בנייה, בדיקות, העלאה.
המחיר של סכימה כזו נראה בזמן ההמתנה. השיווק ממתין לריליס כדי לשנות כותרת או להזיז בלוק; העורך חושש לגעת בקוד שבתוך הטקסט ושובר את הפריסה; כל עמוד חדש נכתב מאפס, כי מודל התוכן של האתר מתואר עבור עמוד מסוים אחד ולא עבור סט של מקטעים לשימוש חוזר.
בהמשך התבניות מתפצלות: שני בלוקים של «ביקורות» בעמודים שונים נבדלים בפריסה ובסגנונות, ואת התיקון יש לבצע בכל אחד. ככל שיש יותר עמודים, התיקון השגרתי יקר יותר והסיכוי שמשהו יישבר אחרי ההעלאה גבוה יותר.
המודול Paragraphs משנה את המודל: כל מקטע הופך לישות נפרדת עם סט שדות משל עצמו, והעורך מרכיב עמודים גמישים מבלוקים מוכנים ומשנה את סדרם בממשק. עריכת תוכן בלי מפתח ובלי ריליס הופכת למצב רגיל — נפרק איך זה נסגר ומה בדיוק צריך להגדיר.
מה נותנת הרכבה נשלטת של תוכן מבלוקים
כשהתוכן מורכב מבלוקים שתוארו מראש ולא משדה אחד גדול, הכלכלה של העריכות משתנה. עמוד שגרתי חדש מורכב תוך דקות: העורך בוחר את המקטעים הנדרשים, משנה את סדרם וממלא אותם בטקסט, בלי להמתין למפתח.
בלוקים לשימוש חוזר חיים בעשרות מקומות בעת ובעונה אחת — עריכה במקום אחד מעדכנת את כל העמודים שבהם הוא מוטמע, בלי מעבר ידני.
האפקט המדיד השני — חלק העריכות שהעורך עצמו סוגר. החלפת כותרת, שינוי סדר מקטעים, הוספת בלוק מתקפל עם שאלות אינם דורשים פריסה: אלה פעולות בממשק, לא בקוד. בפועל שלושה רבעים מהפניות השגרתיות בנושא תוכן מפסיקות להגיע למפתח, וזמני העריכה נמדדים בשעות במקום בימים.
האפקט השלישי — נעלם סוג שלם של כשלי פריסה. כשהתוכן הוכנס כקוד שרירותי, טקסט שהועתק ממסמך או מאתר ישן שבר את הגריד, התפרק במסכים צרים והוציא בלוקים מגבולות המיכל. סכימת הבלוק מתירה רק שדות מוגדרים, ולכן העורך פיזית אינו יכול להכניס קוד שהתבנית אינה יודעת להציג.
מכאן גם התוצאה המצטברת: מהירות הרכבת העמוד עולה, הפיתוח מפסיק להיות צוואר בקבוק עבור צוותי תוכן, והמראה החיצוני נשמר בגבולות שהוגדרו בלי קשר למי ומתי ערך את העמוד. ב-Drupal הרכבה כזו מחזיקים Paragraphs — סט של סוגי בלוקים עם שדות מוגדרים ותבניות פלט.
השוואת גישות: Drupal Paragraphs, ישויות ותבניות
בחירת הגישה נקבעת לפי שתי שאלות: מי בעצם מרכיב את העמוד — עורך או מפתח — וכמה גיוון מבני באמת נדרש. להלן חמישה וריאנטים עובדים, שביניהם בוחרים בעת תכנון מודל התוכן.
| וריאנט | מתי מתאים | מגבלות |
|---|---|---|
| טקסט אחד גדול | עמודים פשוטים, מאמרים עם פריסה אחידה, תוכן משתנה לעיתים רחוקות | הקוד חי בתוך גוף הטקסט, השדות אינם זמינים לשליפות ולסידורים, הפריסה אינה לשימוש חוזר |
| שדות וסוגי תוכן מובנים | סט שדות יציב, מבנה כרטיס צפוי | שדה לא חובה עובר לכל הכרטיסים בבת אחת, מספר מצבי התצוגה גדל במהירות |
| ישויות נפרדות | אובייקטים חוזרים עם מחזור חיים משל עצמם: צוות, משרה, אובייקט | יותר קשרים והרשאות גישה, העריכה דורשת הבנה של מודל הנתונים |
| הרכבה מבלוקים (Paragraphs) | עמודים מורכבים מבלוקים חוזרים בכל סדר | נדרשת הגדרה של סוגי פסקאות ומצבי התצוגה שלהם, משקל השליפה עולה עם קינון עמוק |
| פריסת עמוד באמצעי התבנית | פריסות ייחודיות שבהן המבנה קבוע בעיצוב | כל עריכה של תוכן עוברת דרך המפתח, תבניות התבנית משכפלות את הלוגיקה של Field API |
בפועל הגישות כמעט אינן מתחרות: שדות וסוגי תוכן מובנים מגדירים את המבנה הבסיסי, הרכבה מבלוקים סוגרת את המקטעים החוזרים, תבניות התבנית אחראיות רק על הפריסה, ומצבי התצוגה מפרידים את הפלט של אותה ישות עבור כרטיס, רשימה ועמוד מפורט. סט כזה נשאר ניתן להרחבה: בלוק חדש מתווסף כסוג פסקה, ולא על ידי כתיבה מחדש של התבנית.
שלבי ההטמעה: מביקורת מודל התוכן ועד למסירה
את סדר העבודות בונים כך שכל החלטה תישען על נתונים ולא על הנחות: תחילה ביקורת מודל התוכן, אחר כך תכנון הבלוקים, ורק לאחר מכן העברת החומרים. אם מחליפים את הסדר של הצעדים האלה, המבנה נערך תוך כדי תנועה וסוטה מהעמודים בפועל.
- מלאי עמודים. אוספים רשימה של סוגי תוכן ומקטעים חוזרים, מסמנים בנפרד עמודים ייחודיים — הם מראים מה יחסר לסט הבלוקים.
- ביקורת מודל התוכן. מגדירים את הרכב הבלוקים, השדות שלהם וכללי הקינון: מה מותר להטמיע בתוך מה, ומה העורך לא אמור להרכיב.
- הגדרת סטים של בלוקים. מגדירים Paragraphs ותבניות פלט כך שהעורך יראה רק את הבלוקים המותרים עבור סוג העמוד הזה.
- העברת תוכן קיים. בעזרת סקריפטים מעבירים טקסטים, תמונות וקישורים, ואחר כך משווים את מספר החומרים ואת הקינון.
- בדיקה על עותק האתר. מריצים נפח עמודים אמיתי: הרכבה, חיפוש, ייצוא, התנהגות עם בלוק חלקי.
- קבלה על ידי עורכים. עובדי הלקוח מרכיבים עמודים שגרתיים בלי עזרתנו — בודקים שהממשק מובן, ולא רק שעובד.
- מסירה והדרכה. מוסרים תיעוד לבלוקים, סרטונים קצרים לתרחישים שגרתיים, ונשארים בקשר בשבועות הראשונים.
כל שלב מסתיים בארטיפקט שניתן לבדוק: מפת סוגי תוכן, סט בלוקים מוסכם, דוח על ההעברה. לכן עד למסירה לא נשארות החלטות שהעורכים יגלו רק תוך כדי העבודה השוטפת.
קונפיגורציות, סכימות שדות ותקנונים לעורך
את הפרויקט מוסרים לא כ«אתר עובד», אלא כערכה שאפשר לפתח בה תוכן בלעדינו. כל מה שמוגדר באדמין משוכפל בקבצי הקונפיגורציה: אפשר להעביר את מבנה הבלוקים לסטנד אחר, להשוות גרסאות ולבצע רולבק.
- ייצוא קונפיגורציה — סוגי הפסקאות ב-Drupal, סטי השדות, טפסי העריכה והגדרות הפלט נשמרים במאגר כקבצי YAML נפרדים: הסטנד עולה בפקודה אחת, בלי הרכבה ידנית באדמין.
- סכימת בלוקים ושדות — מפה: אילו סוגי פסקאות קיימים, אילו שדות הם חובה, היכן בלוקים משמשים מחדש בין מדורים. מקטע חדש מתווסף לפי הסכימה הזו, בלי לפגוע בקיימים.
- תבניות פלט — הקוד של כל בלוק עם מחלקות ווריאנטים של תצוגה: עריכת המראה אינה מרכיבה מחדש את מבנה התוכן.
- הרשאות גישה — תפקידי עורך, כותב ומנהל מבנה: מי מוסיף בלוקים, מי משנה שדות, מי רק ממלא תוכן.
- הוראות לעורך — תרחיש שלב-אחר-שלב עם דוגמאות מילוי: להרכיב עמוד, להוסיף בלוק, למלא שדות, לפרסם. בנפרד מנותחות טעויות אופייניות.
- תקנון עריכות — שינויים במבנה עוברים דרך הקונפיגורציה, עם בדיקה על סטנד בדיקות ואפשרות לבצע רולבק.
- גיבויים והעברה — סדר ייצוא הקונפיגורציה והתוכן בין סטנדים, כדי שהשחזור לא יהיה תלוי באדם אחד.
הערכה נשארת אצלכם: הסכימה, התבניות והתקנונים מתארים את המערכת כולה, ולכן הפיתוח שלה אינו כבול למבצע מסוים.
קייס: קיצרנו את זמן הרכבת העמוד פי חמישה
מה היה
פורטל תוכן עם כמה אלפי חומרים: החלק המכירתי — דפי נחיתה. כל אחד הורכב ידנית, הבלוק נוסף בעריכת תבנית, ולכן עמוד שגרתי לקח שניים־שלושה ימים. כל שינוי בסדר המקטעים המתין למפתח — 14 פניות בחודש, התור לעריכות הגיע לשבוע.
את הקוד העברנו לסט בלוקים לשימוש חוזר ב-Drupal: העורך מרכיב עמוד ממקטעים מוכנים, השדות נבדקים בכניסה, והקינון מוגבל בכללים. קוד שרירותי מהעורך הוויזואלי הוסר — כותרות, טבלאות ותיבות צד עוברות רק דרך תבניות מאושרות.
את מיגרציית התוכן ביצענו על עותק של בסיס הנתונים: החומרים הועברו במנות, השווינו את התאמת השדות והקינון, והשווינו את פלט העמודים לפני ואחרי על מדגם ביקורת. המבנה, הכתובות והמטא-נתונים נשמרו, ולכן המיקומים בחיפוש לא ירדו.
מה נהיה
עמוד שגרתי מורכב תוך 30-40 דקות במקום יומיים, מספר הדורות ירד מ-14 ל-2 בחודש. נעלם סוג שלם של כשלי פריסה: עמודות שמתפרקות במובייל, כותרות כפולות, טבלאות «שזזות» וסגנונות אקראיים מהעורך. היסטוריית העריכות נשמרת לכל בלוק, ורולבק לגרסה קודמת של העמוד לוקח דקות, ולא פנייה לתמיכה.
במה הרכבה מבלוקים נבדלת משדה טקסט אחד?
שדה טקסט אחד — עמודה אחת בבסיס הנתונים ועורך ויזואלי אחד. כל עוד העמוד מורכב מפסקאות רציפות, זה מספיק; ברגע שמופיעים כרטיסים, אקורדיונים ותיבות פרומו, המבנה עובר לתוך מחרוזת HTML.
שליפות לפי שדות ואינדקס החיפוש מפסיקים לראות אותו: אי אפשר עוד לסנן עמודים עם בלוק מסוים או להטמיע אותו במדור אחר.
Drupal סוגר את הפער הזה דרך Paragraphs — הרכבה מבלוקים, שבה כל מקטע משמעותי הוא ישות נפרדת עם סט שדות משל עצמו. כותרת, תמונה, קישור ותאריך יושבים בעמודות מובנות, ולא בתוך הקוד: תבנית פלט אחת עובדת עם נתונים שונים, והשליפות והייצוא נשארים צפויים.
קינון בלוקים מוסיף רמת מיכל: בתוך כרטיס העורך פורש רכיבי בן. סטים חוזרים — גלריה, רשימת יתרונות, שאלה-תשובה — מתוארים פעם אחת ומורכבים כמו קונסטרוקטור. את עומק הקינון מגדירים בקונפיגורציה של השדה: בלי הגבלה עורכים בונים מבנים שקשה להציג ואי אפשר לעשות בהם שימוש חוזר.
האחידות של העמודים היא תוצאה של סכימה כזו. אלמנטים זהים בעמודים שונים קוראים נתונים מאותו סוג בלוק ומוצגים בתבנית אחת: עריכת הפריסה של תיבת פרומו משנה אותה מיד בכל המדורים, ולא בשתי מאות עמודים בנפרד.
שדה אחד נשאר מתאים במקום שאין בו חזרתיות: ידיעה קצרה, טקסט משפטי, עמוד שירות. ברגע שאלמנט מופיע יותר מפעמיים או צריך להיכנס לשליפה, מעבירים אותו לבלוק.
שאלות טכניות לפני ההתחלה: מטמון, מיגרציות, הרשאות
מודל התוכן ב-Drupal Paragraphs נוגע במטמון, במיגרציית החומרים ובהרשאות גישה — ולכן את הנושאים האלה מנתחים לפני שורת הקוד הראשונה. להלן ספקות נפוצים של צוות הלקוח והתשובות הענייניות שלנו.
מה יקרה לתוכן שכבר פורסם?
את החומרים מעבירים במנות: שדות ישנים מותאמים לסוגי בלוקים, הכתובות והמטא-נתונים של העמודים נשמרים. המנה הראשונה עוברת לקונטור בדיקות, שבו אתם משווים את הפלט, ורק אחר כך מתמלא אתר העבודה. רולבק למודל הקודם אפשרי עד למעבר הסופי.
האם מבנה הבלוקים יאט את טעינת העמודים?
העמוד נשמר במטמון במלואו, ועריכה של בלוק מסמנת את המטמון של הכתובות המשויכות אליו, ולא של כל האתר — רק המקטע שהשתנה מורכב מחדש. סט סוגי הבלוקים עצמו מוגבל, ולכן העורך לא מרכיב מבנים מקוננים כבדים.
איך להגביל את הרשאות העורך?
התפקידים מופרדים לפי אזורים: העורך מרכיב עמודים מבלוקים מותרים, אך אינו משנה סוגי בלוקים, שדות ותבניות עיצוב. הפרסום מוציא להרשאה נפרדת — טיוטה מופרדת מהגרסה החיה, ואפשר לבדוק את המוכן לפני הצגתו.
איך לפרוס מודל חדש בלי זמן השבתה?
סוג בלוק חדש מתווסף לצד הישנים, העמודים מוחלפים בהדרגה, ומצב תחזוקה אינו מופעל. תחילה בודקים את השינויים על עותק של אתר העבודה, ואחר כך מעבירים לקונטור העבודה — המבקר בכל רגע רואה פריסה עובדת.
נדון במודל התוכן שלכם ונחזור עם תוכנית
כדי שההערכה תישען על עובדות ולא על מילים כלליות, שלחו גישה לעותק של האתר או תיאור של מבנה העמודים הנוכחי: סוגי תוכן, שדות, מה נבנה כיום ידנית.
המהנדסים שלנו מסתכלים על האדמין והפריסה בפועל — כך רואים מיד אילו סטים של Paragraphs מועברים כפי שהם, ואילו יהיה צורך להרכיב מחדש, והיכן עורכים עוקפים את המבנה עם בלוקים חיצוניים.
בתגובה נחזור עם הערכת היקף וסדר שלבים: מה עושים ראשון, מה תלוי בעריכות המערכת, והיכן יידרש העברת נתונים. ביקורת האתר הנוכחי מסירה את הסיכון המרכזי — עריכה מחדש של מודל התוכן באמצע העבודה, כשהעמודים כבר נבנו מחדש.
- מלאי תוכן: מפת סוגי תוכן, שדות וקשרים, רשימת מקומות שבהם המבנה מופר.
- סכימת מודל התוכן: אילו סטים של פסקאות נדרשים, אילו שדות הם חובה, ואילו הגבלות מציבים לעורך.
- תוכנית העברה: העברת העמודים הקיימים בלי לאבד פריסה וקינון.
- הגדרת ממשק העורך: הרשאות, תצוגה מקדימה, טיוטות, תבניות עמודים שגרתיים.
- בדיקה על עמודים אמיתיים: מרכיבים חדשות, שירותים, קטלוגים על הסטים החדשים.
- ריליס עם אפשרות רולבק: העברה לאתר החי ומעקב אחרי ההשקה.
תארו את המשימה בשתי מילים או שלחו גישה לעותק — נחזור עם תוכנית עבודה וסדר שלבים ברור.







