להכניס 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.

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

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

SSG עם next

אחרי שלמדנו במאמר הקודם מה זה SSR והבנו שלא מדובר בקליע כסף שפותר את כל הבעיות שלנו, נלמד על SSG שיכול להקל על כמה מהבעיות של SSR.

תמונה מצוירת של רובוט שמנקה HTML
יסודות בתכנות

סניטציה – למה זה חשוב

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

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

מיקרו בקרים

בית חכם עם ESPHome ו Home Assistant

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

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