להכניס view לתוך דפים בדרופל

הסבר על איך עושים embed ל-view מסוים בתוך כל עמוד שהוא באמצעות template.php ופונקציה אחת שעושה את כל העבודה.

אני מאד אוהב להשתמש בדרופל. לא רק שאני משתמש בה בעבודה, אני גם משתמש בה בכל פעם שאני צריך להרים משהו שהוא מעבר לאתר. זה לא אומר שהמערכות האחרות כמו וורדפרס או ג'ומלה הן פחות טובות (או פחות 'חזקות', כמו שאנשים שמבינים פחות בתכנות נוטים לומר). כל ה-CMSים טובים, אבל יש דברים שעם דרופל זורמים יותר בקלות.

אחד הפיצ'רים הגאוניים שיש בדרופל וכרגע אין לו מקבילה שוות ערך לא בג'ומלה ולא בוורדפרס היא מערכת ה-views של דרופל. למי שלא מתמצא, מדובר פשוט במערכת ממש פשוטה לבניית שאילתות למסד הנתונים בלי צורך לבנות אותן ממש ב-MySQL ובנוסף זה מגיע עם אפשרויות רבות לשינוי ועיצוב ה-Output ועובר דרך מערכת ה-Themes של דרופל ומערכת ההרשאות שלו.

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

יצירת view
יצירת view

��-view הזה יכול להיות מורכב או מסובך, זה לא משנה. אפשר לראות לפי הדוגמה שלא מדובר ב-view פשוט מאד.

לאחר יצירת ה-view, נזכור את השם שלו ואת הארגומנטים (אם יש לנו כאלו). כאן למשל, יש לי ארגומנט של ה-user id שאותו אני צריך להכניס ל-URL על מנת שה-view ידע את ההודעות של מי להציג.

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

ב-template אני צריך לבחור את ה-preprocess הנכון. במקרה שלי, כיוון שאני רוצה להכניס את ה-view הזה לפרופיל של המשתמש, אני אבחר ב-TEMPLATE_preprocess_user_profile. כמובן שיש להחליף את ה-TEMPLATE בשם של התמה שלנו. בתוך ה-preprocess, אני אצור משתנה ואכניס את ה-view לתוכו. איך? בדיוק ככה:


function TEMPLATE_preprocess_user_profile(&$vars) {
  $vars['user_messages'] = views_embed_view('users_messages', 'page', arg(1));
}

במה השתמשתי? השתמשתי בפונקצית views_embed_view (והנה קישור לדוקומנטציה שמספרת עליה). הפונקציה הזו כשמה כן היא, פשוט לוקחת view ודואגת שהוא יכנס לתוך התמה שלנו. מה הפונקציה הזו צריכה? באופן עקרוני שני דברים:
1. שם ה-view (כאילו דההה)
2. ה-display (אם יש לכם view פשוט, אז זה page)

אם יש ארגומנטים שצריך להכניס, צריך להכניס אותם לפי הסדר, במקרה שלי הייתי צריך את שם המשתמש שמופיע ב-URL (ואם לא, אגב, קל להשיג אותו ב-preprocess של user_profile) – השתמשתי ב-(arg(1 על מנת להשיג אותו ולהציב אותו ב-views_embed_view.

כל מה שנותר לי לעשות, זה להדפיס את המשתנה שהכנסתי אליו את התוצאות של views_embed_view ב: user-profile.tpl.php וזהו! פיניטו לה קומדיה!

הקוד הזה, אגב, עובד גם בדרופל 6 וגם בדרופל 7.

פוסטים נוספים שכדאי לקרוא

בינה מלאכותית

בעיות אמיתיות של אבטחה באייג׳נטים

אייג׳נטים יכולים להיות תמימים להחריד, בפוסט הזה שמלווה פרק מיוחד בפודקאסט עמוק ב-Bots, אנחנו נראה הגנות והתקפות על אייג׳נטים.

בינה מלאכותית

hooks של LLMים שעורכים קוד

הסבר על הוקים: הפעלה אוטומטית של פקודות שקיימת בכל האייג׳נטים שעורכים קוד (כלומר קורסור, קלוד קוד, קודקס וחבריהם) שיכולה מאד לסייע בפיתוח.

ממנטו עם גמל אין לי מושג למה אני עושה דברים
יסודות בתכנות

מה זה stateful ו-stateless

מה זה סטייט? למה אנחנו צריכים לדעת מה זה ואיך רואים את זה ממש בעיניים.

בינה מלאכותית

שימוש ב-Plan Mode באופן חכם

כך נמנעי את קריאות השבר של "מה האייג'נט עשה?!" שיטת Plan mode: שיטה קריטית לעבודה יעילה, המייצרת תוכנית עבודה מפורטת (DoD) עוד לפני כתיבת שורת קוד אחת.

פתרונות ומאמרים על פיתוח אינטרנט

מדרך מעשי לכתיבת קוד עם AI Agents

טכניקות בדוקות שנבדקו במוצרים אמיתיים לכתוב קוד טוב יותר עם LLM Agent. פוסט מיוחד למתכנתים מנוסים.

גלילה לראש העמוד