Avraham Framework

התבנית שמצורפת כאן היא תבנית ריקה אמנם, כלומר לא כוללת שום עמוד מוכן. עם זאת, היא כוללת תשתית לעבודה MVC באמצעות OOP. משמע, יש אפשרות להשתמש במרחבי שמות (namespaces), ולטעון קלאס באמצעות autoloader. התנאי היחיד לשימוש באוטולואדר הוא שהקלאסים ישבו תחת תיקיית classes בתבנית הבת, וההיררכיה של הניימספייסים תהיה כך שקלאס יושב בתוך הספריה של הניימספייס (אב-בן). לדוגמה, אם אני ניגש לקובץ הזה classes/test_namespace/test_class.php תחת תיקיית התבנית, כאשר הגדרתי את הקובץ כך, אוכל לגשת לקלאס כך: \test_namespace\test_class

namespace test_namespace;


class test_class {

}

בנוסף, התבנית מאפשרת טעינה אוטומטית של קוד, במקום לשים את הקוד ב-functions.php במעורבב וללא סדר מסוים, ניתן להבדיל את הקוד, לפחות את מה שלא רוצים לעטוף בקלאס, לקבצים, ולשים אותם תחת התיקיה models. כל מה ששם ייטען אוטומטית. מקום מצוין על מנת לשים פילטרים, אקשנים וסתם הגדרות.

השלב הבא, וגם הוא ניתן בתבנית, הוא ווידג'טים אוטומטיים. תחת views בתיקיית התבנית, בתוך תיקיה בשם widgets ניתן לכתוב קטעי קוד. הם יתורגמו מיד לקלאסים מיוחדים של ווידג'טים, שייטענו בטעינת העמוד ויגדירו ווידג'טים, שבהכללה שלהם באיזור ווידג'טים כלשהוא יציגו את תוכן הקובץ שפתחתם. ניתן להגדיר קובץ רגיל של php ושם להגדיר קוד דינמי כלשהוא, וניתן גם להגדיר קובץ haml (או twig) ולשלוח אליו משתנים באמצעות פילטר מיוחד שנקרא בשם הווידג'ט – זאת אם מפעילים את מודל ה- haml widgets תחת Theme Options.

במקרה כזה, ניצור לדוגמה קובץ בשם widget4.haml שתוכנו:

%section{:class => "container"}
  %h1= $post->post_title
  %div{:class => "content"}
    = $post->post_content

ואז נגדיר את הפילטר הזה באחד מהקבצים

add_filter( 'widget4_widget', function () {
	global $post;

	return array(
		'post' => $post
	);
} );

הקובץ של ה-haml יקבל משתנה בשם post שכולל את המשתנה הגלובלי post של אותו העמוד, וכך יוכל להשתמש בו באופן דינמי בתוך הטמפלייט. בתוך הפילטר ניתן להעביר תכנים כלשהם, ולהעביר כמערך של אובייקטים, מערכים, סקלרים וכו'.

השלב הבא יהיה להפעיל את מודול ה- templates. גם כן ב- Theme Options. לאחר שנאפשר את המודול, נוכל לפנות לטבלה templates בדאטהבייס, ותחת העמוד שנפתח templates, לפתוח טמפלייטים חדשים. כל טמפלייט שנפתח יגדיר איזור ווידג'טים. את איזורי הווידג'טים נוכל לראות תחת appearance>widgets, כרגיל. שם נוכל לכלול ווידג'טים שהגדרנו בלייאאוט דו מימדי, כלומר כשורות וכעמודות. אם רוצים לשים כעמודות ניתן להשתמש ב- grid widget שהוא למעשה flex-box וניתן להגדיר לו את סוג היישור. ברירת המחדל היא flex-start, כלומר בשורה משמאל לימין. שם ניתן להגדיר כמה ווידג'טים שרוצים בשורה. את הטמפלייט טוענים בעזרת הפונקציה הרגילה של dynamic_sidebar.

במידה ונפעיל את מודול Widgets HTML Static Cache, התוכן הדינמי שיווצר בכל פעם שהעמוד ייטען, יהפוך לסטטי. כלומר, הוא ייוצר אל תוך קובץ html וייטען ממנו במקום ליצור בכל פעם מחדש את ה-php הדינמי (בין אם דרך haml ובין אם כ-php). כך ייחסך זמן עיבוד. מנגנון קאש נוסף שאפשרי הוא קאש של שאילתות, כלומר בכל טעינת עמוד נוצרת שאילתא שמגדירה את ה- WP_Query של אותו עמוד. במקום לפנות לדאטהבייס, תוצאות השאילתא ייטענו מקובץ, מה שלעיתים יהפוך את הביצועים למהירים יותר.

במידה ומפעילים את מודול ה-ORM ניתן לפתוח טבלאות קאסטם בדאטהבייס באופן בסיסי, כלומר עם טיפוסי משתנים רגילים ובגודל מוגדר – int, float, varchar וכו'. המודול הזה הוא אקספרימנטלי ועדיין יחסית פרימיטיבי אך חוסך לעיתים המון עבודה, וכמובן אפשר להתחיל בו ולהמשיך בעבודה שחורה בדאטהבייס.

התבנית ניתנת להורדה/שיבוט כאן. בתבנית הבת יש דוגמאות שימוש, לפחות מינימליות.

טיפים ומאמרים וורדפרס, פריימוורק

בחזרה למאמרים