בשנים האחרונות הועם זוהרה של מערכת דרופל. טרנדים אחרים ונוחים הרבה יותר ובראשם הפריימוורקים המורכבים של JavaScript כגון angular תפסו את מקומה.
למרות זאת, דרופל עדיין מהווה את אחד הכלים הנוחים ביותר לבניית מערכות מורכבות במעט מאוד זמן פיתוח. אם אתם רוצים להשתמש ב-angular או בדומיה אבל עדיין להשתמש בדרופל כמערכת להזנת נתוני השרת. או לחלופין – יש לכם אתר דרופל שאתם רוצים להמיר ל-angular מבחינת הפרונט אבל רוצים להמשיך להשתמש בו מבחינת הבק אנד. או אפילו אם אתם מתכוננים מראש להשתמש בדרופל כמערכת בק אנד בלבד – החבר'ה הטובים של חברת לינווייט השיקו מודול חדש בשם MEAN module שמקל מאוד על יצירת אתרים כאלו.
באופן עקרוני, מה שהמודול הזה עושה הוא המרת כל התכנים המרכזיים של דרופל לאובייקטים של JSON. את האובייקטים אפשר כמובן לקבל בשאילתות AJAX רגילות באמצעות כל פריימוורק של JavaScript.
איך עושים את זה? פשוט מאוד – קודם כל מתקינים את מודול MEAN. אחרי ההתקנה, אתם יכולים כבר לגשת אל כל אובייקט באמצעות URL באופן הבא:
/mean/json/load/node/[NID]
יטען עבורכם את אובייקט ה-node ויחזיר אותו ב-JSON
/mean/json/load/user/[UID]
יטען עבורכם את אובייקט המשתמש ויחזיר אותו ב-JSON.
/mean/json/view/[VIEW_MACHINE_NAME]
יטען את כל ה-view ויחזיר אותו כאובייקט JSON.
יש עוד לא מעט דוגמאות לאובייקטים השונים ולאפשרויות השונות של הטעינה שלהם. למשל:
/mean/json/view/[VIEW_MACHINE_NAME]/page_1
יחזיר לי את ה-display שנקרא page1 של ה-view המדובר. אפשר גם לטעון טקסונומיה, תפריטים, לנהל משתמשים (לעשות לוג אין, לוג אאוט ולקבל session של משתמש כדי לוודא שהוא מחובר).
אבל אחד הדברים החזקים במודול הזה הוא האפשרות לבנות 'חבילות' של מידע באמצעות ממשק נוח. החבילות האלו יכולות להכיל לא מעט נתונים שמומרים לאובייקט JSON ומתקבלים בקריאה אחת. למשל אני יכול להכין חבילה שכוללת כמה views ולקבל אותה בקריאה אחת. אני יכול להכין חבילה של המשתמש הנוכחי ו-view מסוים (שכולל את כל הפעילויות האחרונות שלו למשל) וכך הלאה. החבילות האלו נקראות packets וניתן לבנות אותן באמצעות הממשק של MEAN שמופיע בפאנל הניהול מיד לאחר ההתקנה.
ראשית נבחר את השם – לצורך העניין My-first-packet, אחרי שבחרנו את השם, אנו יכולים להוסיף את כל הנתונים שאותם אנו רוצים להמיר בשדה של JSON to be fetched. בואו למשל נכניס את:
/mean/json/load/user/me
שמחזיר את אובייקט המשתמש הנוכחי
/mean/json/load/node/1
מחזיר את Node 1, שבו יש הודעת לוג-אין לצורך העניין
אפשר כמובן להכניס עוד אובייקטים. אבל נסתפק בזה. אחרי השמירה, כל מה שאנו צריכים לעשות זה להכנס אל
/mean/json/get-mean-packet/My-first-packet
ולראות את כל האובייקטים שביקשנו – אובייקט המשתמש הנוכחי ואובייקט node 1 ב-JSON. נחמד, לא?
מדובר בכלי שימושי ביותר, אבל אני הייתי צריך יותר שימושיות, בגלל זה כתבתי patch לגרסת דרופל 6, שמופיע בדף המודול של MEAN ואני מקווה שמתישהו יכנס למודול עצמו. ה-Patch הזה מאפשר לי לשלוח פרמטרים ל-packets ולהשתמש בהם בקריאות השונות. למשל לשלוח קריאה כזו:
/mean/json/get-mean-packet/My-first-packet/[UID]
ולקבל חזרה את
mean/json/load/user/[UID] /mean/json/view/[VIEW_MACHINE_NAME]/[DISPLAY_NAME]/0/[UID[
איך משתמשים בזה? מתקינים את ה-patch שכתבתי ומשתמשים בדיוק באותה דרך שהראיתי לעיל. שימו לב שה-patch כולל הסבר ב-readme.txt על דרך ההפעלה שלו.
שימו לב שאם יש לכם אתר שאתם לא רוצים לחשוף את כל התוכן שלו, אתם צריכים להתקין את ה-patch השני שלי שדואג לעניין. גם הוא מופיע בדף המודול.