מג'נטו – מדריך לבניית מודול

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

במדריך זה, אנו מציגים את הקידוד של מג'טו בצורת מודול בסגנון "שלום עולם". המטרה של מודול זה תהיה פשוט לכתוב קצת מידע לקובץ לוג בכל פעם שמוצר נשמר. מודול מאוד בסיסי זה יאפשר לנו לכסות מספר נושאים מעניינים, כולל:
ספריות ה app/code,
המבנה ויצירת מודול מג'נטו,
משקיפי אירוע (Event Observers),
רישום ללוג.

לפני שנתחיל

הדרכה זו מבוססת על ההנחה שכבר יש לך התקנה פועלת של מג'נטו, במחשב המקומי או בשרת פיתוח, שניתן להוסיף אליה קבצים.
הגרסת מג'נטו שאתה משתמש בה לא ממש משנה, כי אנחנו נכסה היבטים בסיסיים שקיימים בכל הגרסאות והמהדורות: Community ו Enterprise (מה שמסומל בתור CE וEE).

להשבית את המטמון (cache)

זהו אחד השיעורים הראשונים שמפתח מג'נטו צריך ללמוד: להשבית את המטמון! אתה יכול לעשות זאת על ידי שתיכנס לנתיב הבא באדמין: מערכת -> ניהול זיכרון מטמון -> בחר הכל -> פעולות: כבה -> שלח .

כיבוי המטמון
כיבוי המטמון

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

תיקיית app/code

ניתן למצוא את המוח של מג'נטו במודולים בתוך התיקייה app/code, שמחולקת לשלושה תיקיות: core, community וlocal.

תיקיית CORE

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

תיקיית CUMMUNITY

כפי שהשם מרמז, app/code/community היא התיקייה שבה תוכל למצוא מודולים שסופקו על ידי צד שלישי (כלומר, לא צוות הליבה של מג'נטו). ניתן למצוא מאות מודולים זמינים ב Magento Connect, כשאתה מתקין אותם, זה המקום שבו הם בסופו של דבר יימצאו.

תיקיית LOCAL

מג'נטו מגיעה כשתיקיית app/code/local ריקה, מוכנה להוספת המודולים שמיועדים ספיציפית להתקנה שלך. זה המקום שבו נעבוד במשך מדריך זה.

בניית ההירכיה של התיקיות שלנו

פתח את העורך האהוב עליך, ונווט לapp/code/local בכדי להוסיף כמה תיקיות וקבצים חדשים.

MODULE NAMESPACE

התיקייה הראשונה שניצור היא "NAMESPACE" במשמעות של "מרחב", המטרה של תיקייה זו היא לאגד את כל המודולים ששייכים למפתח או חברה כלשהי תחת תיקייה אחת.
התיקייה יכולה להיקרא בכל שם שתרצה, אבל עדיף להכניס שם עם משמעות כמו למשל שם החברה או המפתח שבונים את המודול. מג'נטו משתמשת בMage בתור הNAMESPACE שלה.
עבור הדרכה זו, אנו נשתמש ב"Sapir" כמרחב שלנו.
אז בואו נתחיל, ניצור את תיקיית app/code/local/Sapir.

שם המודול

לתיקייה הבאה, ניתן שם שמתאר את הפונקציונליות שלו. המודול שאנו יוצרים יכתוב ללוג ערכים בכל פעם שמוצר נשמר, אז שם עם משמעות כזאת יהיה LogProductUpdate. צור את תיקיית app/code/local/Sapir/LogProductUpdate.
עכשיו צריך להיות לנו את מבנה התיקיות הבא למודול שלנו. שמות התיקיות והקבצים החל מתיקיית local חייבים להתחיל עם אות גדולה, אם לא תעשו כך תגלו מאוחר יותר שאתם בצרות ולא תבינו למה..

קביעת התצורה של המודול

בשלב הבא, נתחיל להגדיר את המודול שלנו. קבצי התצורה של המודול נמצאים בתיקייה בשם etc, אז בואו ניצור את התיקייה בנוסף לקובץ XML חדש: app/code/local/Sapir/LogProductUpdate/etc/config.xml. קובץ XML זה מודיע למג'נטו את מיקום הקבצים במודול שלנו, כמו גם הרבה דברים אחרים, כמו מספר הגרסה של המודול ואירועים עליהם אנחנו רוצים לחבר קוד משלנו – משקיפים (Observers). לעכשיו, אנו ניצור קובץ config.xml פשוט, המכיל הערות המסבירות את המשמעות של כל סעיף.

הפעלת המודול

השלב הבא הוא להודיע למג'נטו שהמודול שלנו קיים, מה שנעשה על ידי יצירת קובץ XML חדש בapp/etc/modules. שמו של קובץ XML זה יכול להיקרא כל דבר שתרצה, בגלל שמג'נטו יקרא את כל התוכן של הקבצים שנמצאים בתיקייה זאת ללא עניין בשם הקובץ. עם זאת, כדי לשמור על הסדר ועל האפשרות להבין מה הולך, צריך לתת לקובץ ולמודול את אותו השם.
בואו ניצור app/etc/modules/Sapir_LogProductUpdate.xml עם התוכן הבא:

בדיקת שפיות: האם המודול פעיל?

עכשיו יש לנו מודול פונקציונלי מלא שמופעל במג'נטו. זה לא עושה שום דבר, אבל זה מודול תקין. זו ההזדמנות הראשונה שלנו לראות האם הגדרנו בצורה נכונה את כל הדברים.
אם ניכנס לפנל ניהול של מג'נטו וננווט מערכת -> הגדרות -> מתקדם -> מתקדם והצג את הרשימה "חסום פלט מודול", אנחנו צריכים לראות את המודול Sapir_LogProductUpdate רשום כמאופשר. אם זה אינו מופיע ברשימה, אז משהו השתבש, צריך לעבור בזהירות לאורך השלבים עד לנקודה זו שוב. זה הזמן בובדרך כלל מפתחי מג'נטו חדשים מגלים את המטמון..
כפי שהזכרתי לפני כן ייתכן מאוד גם טעות של אות קטנה בתחילת תיקייה/תגית במקום אות גדולה.
המבנה של המודול שלנו נראה עכשיו כך:

הגדרת משקיף אירוע (Observer)

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

קביעת התצורה של המבנה מודל שלנו

במשקיף האירוע שהגדרנו, התייחסנו למודל שעדיין לא נוצר. אנחנו צריכים להודיע למג'נטו איפה למצוא מודלים במודול שלנו על ידי עדכון config.xml עם הפעולות הבאות:

יצירת המודל של המשקיף

אנחנו ניצור מודל שממנו ניצור אובייקט (מופע) כאשר האירוע מופעל. צור קובץ PHP חדש app/code/local/Sapir/LogProductUpdate/Model/Observer.php עם התוכן הבא:

סיימנו! נסה את זה ותראה אם עובד לך.
מבנה התיקיות למודול המושלם צריך עכשיו להיראות כך:

עכשיו שהמודול שלנו הושלם, זה הזמן לנסות אותו!
היכנסו לפנל ניהול של מג'נטו, צרו או עדכנו מוצר בקטלוג, ולאחר מכן בדקו את תיקיית הvar/log לראות האם הקובץ שלכם product-updates.log קיים ועם מידע.
אם שום דבר לא מופיע או התיקייה לא קיימת, בדוק כי יש הרשאות מספקות לתיקייה כדי לרשום לתוכה, ובדוק בנוסף כי ברישום ללוג פעיל במערכת -> הגדרות-> מפתח -> לוג – הגדרות -> פעיל: כן.
הדרכה בסיסית זו נועדה כדי לתת לך הבנה כללית של איך המודולים של מג'נטו עובדים. לאחר שתסיים את ההדרכה הזו, תקדיש זמן מה לחקור את המודולים של מג'נטו בapp/code/core ותראה אם עכשיו יש לך הבנה ברורה יותר איך זה עובד. אנו מקדמים בברכה כל שאלות ונשמח לשמוע את משוב על המאמר באיזור התגובות למטה.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *