אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • קבלו עדכונים במייל
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • קבלו עדכונים במייל
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » בניית מודול לדרופל 6 ולדרופל 7

בניית מודול לדרופל 6 ולדרופל 7

רן בר-זיק נובמבר 28, 2010 7:48 am אין תגובות

מדריך קצר לבניית מודול תיבה בסיסי בדרופל 6 ו-7

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט. הפרויקט הוא הפרויקט הספרותי המוביל בהדסטארט. בשיתוף הקריה האקדמית אונו.

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

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

קובץ המידע – info

ראשית ניצור תיקיה ואת שני הקבצים הבסיסיים של המודול שלנו שלו נקרא my_module. לתיקיה נקרא בשם המודול ולקובץ המידע נקרא בשם my_module.info. לתוכו נכניס את הנתונים הבאים:


name = my_module block
description = Module that create block.
package = My Modules
core = 6.x
version = "1.0"
core = "6.x"

כל העניין כאן הוא די self explanatory. שם המודול, שם גרסת הדרופל (core) שאיתה הוא עובד וה-package שזה הקטגוריה שתחתיה מופיע המודול כאשר אנו מפעילים אותו מהאדמין.

החלק היותר מעניין מבחינתנו הוא הקובץ השני

בניית קובץ המודול

שם הקובץ הוא my_module.module כאשר הוא חייב להיות זהה לשם של קובץ ה-info. זה הקובץ שעושה את העבודה. הוא יכול להפנות ל-inc או לכלול classים. לטעון תמונות או ג'אווהסקריפט, אבל זה הבסיס להכל. אם אתם בונים מודול שהוא OOP אז כאן תבצעו את ה-instance של ה-class. אבל אנחנו הפעם נתכנת באופן פרוצדורלי.

על מנת לעשות משהו במודולים, אנו צריכים להבין ראשית את ה-hookים. מדובר בפונקציות רבות שהפורמט שלהן הוא hook_XXXXXX כאשר אנו נחליפים את ה-hook בשם המודול שלנו. ה-hook פועל בכל פעם שיש קריאהלמשל hook_form יעבוד בכל פעם שיש קריאה למודול form. אנו ניצור hook_block שיעבוד כאשר יש לנו קריאה למודול block וניצור באמצעותו בלוק חדש דנדש.

לא הבנתם? לא נורא, נבין בהמשך. רשימת ה-Hooks נמצאת ב-Drupal.api. על מנת ליצור block אנו נשתמש ב-hook_block. יש דוגמא נהדרת לשימוש ב-hook_block בדוקומנטציה. אנו נעשה עליה copy&paste ואני אמחק את החלקים הלא שימושיים:


function my_module_block($op = 'list', $delta = 0, $edit = array()) {
	if(op == "list") {
		 $blocks[0] = array('info' => t('Mymodule block #1 shows ...'),
      		'weight' => 0, 'status' => 1, 'region' => 'highlight');	
		return $blocks;
	}
}

מה שחשוב מבחינתנו זה ה-OP. ה-OP משתנה בכל פעם שהפונקציה רצה. במידה ואנו מריצים את ממשק הניהול (modules) ה-OP יהיה שווה ל-List. במידה ואנו מריצים את הבלוקים, ה-OP יהיה שווה ל-view. ישנן עוד שתי מודים של OP שאליהם לא אתייחס כרגע.

op=list

בחלק זה של הפונקציה אנו מגדירים את הבלוק שלנו כפי שהוא יראה בממשק הניהול ברגע שהמודול יותקן. האמת היא שזה די פשוט, לכל בלוק שאנו יוצרים, יש צורך לספק כותרת, תיאור ומקום מועדף. ניתן גם לספק פרמטרים נוספים כמו weight ("המשקל" של הבלוק ביחס לבלוקים אחרים באותו איזור). במקרה הזה סיפקתי כותרת, תיאור ומקום מועדף (highlight – מקום שנמצא בתמת zen). אם אני אתקין את המודול ואפעיל אותו, אני אוכל לראות את הבלוק הזה ברשימת הבלוקים שיש בחלק של האדמין.

op=view

בחלק הזה של הפונקציה אנו מגדירים את הבלוק שלנו כפי שהוא יראה ב"רגע האמת"', כאשר המשתמש ייכנס לראות מה פה קורה פה. אנו מגדירים לבלוק גם title וגם content.


function my_module_block($op = 'list', $delta = 0, $edit = array()) {
	if($op == "list") {
		 $blocks[0] = array('info' => t('Mymodule block #1 shows ...'),
      		'weight' => 0, 'status' => 1, 'region' => 'highlight');	
		return $blocks;
	}
	else if ($op == 'view') { //Create block content
	    switch($delta) {
	      case 0:
	      	$block = array('subject' => 'BLOCK SUBJECT',
	          			   'content' => 'BLOCK CONTENT',
	      					);
	        break;
	    }
  		return $block;
	}
}

כאשר כמובן גם ה-content וגם ה-title יכולים לקבל תוכן מפונקציה אחרת שנמצאת במודול.

הוספת קבצי CSS וקבצי JavaScript

באופן עקרוני ניתן להוסיף את תכונות ה-CSS וקבצי ה-JavaScript שקשורים לבלוק שלנו דרך התמה הרגילה – אבל מדובר בשגיאה. ראשית, אנחנו לא רוצים לטעון CSS ו-JavaScript לא רלוונטיים במידה והבלוק לא מוצג. שנית, אם נרצה לשכפל את הבלוק למערכת אחרת או להפיץ אותו – לא נוכל לעשות זאת בקלות. הוספת קבצי CSS ו-JavaScript למודול מסוים היא פשוטה ביותר, פשוט מוסיפים שתי פונקציות פשוטות ביותר ל-op=view:


function my_module_block($op = 'list', $delta = 0, $edit = array()) {
	if(op == "list") {
		 $blocks[0] = array('info' => t('Mymodule block #1 shows ...'),
      		'weight' => 0, 'status' => 1, 'region' => 'highlight');	
		return $blocks;
	}
	else if ($op == 'view') { //Create block content
	    switch($delta) {
	      case 0:
		  	drupal_add_css(drupal_get_path('module', 'my_module') .'/my_module.css');
			drupal_add_js(drupal_get_path('module', 'my_module') . '/my_module.js');
	      	$block = array('subject' => 'BLOCK SUBJECT',
	          			   'content' => 'BLOCK CONTENT',
	      					);
	        break;
	    }
  		return $block;
	}
}

drupal_add_css ו-drupal_add_js הן שתי פונקציות פשוטות ומאד קלות. כל מה שעלינו לעשות זה ליצור את קובץ ה-CSS וה-JavaScript בתיקיה של המודול ו… זהו!

כך יוצרים מודול בסיסי בדרופל 6.

המרת מודול block לדרופל 7

בדרופל 7 אין לנו יותר hook_block עם op אלא לכל op יש hook משלו. באופן שמפשט את העניין לפי דעתי. בדרופל 7 אנו נפצל את ה-hook_block ל-hook_block_info שיטפל באיך שהבלוק נראה בממשק הניהול ול-hook_block_view שיטפל בהצגת הבלוק למשתמש.

כך יראה המודול המאד בסיסי שלנו בדרופל 7:


function hook_block_info() {
	$blocks[0] = array(
					'info' => t('Mymodule block #1 shows ...'),
					'weight' => 0, 'status' => 1, 
					'region' => 'highlight');	
	return $blocks;
}

function my_module_block_view ($delta = '') {
switch($delta) {
	      case 0:
	      	$block = array('subject' => 'BLOCK SUBJECT',
	          			   'content' => 'BLOCK CONTENT',
	      					);
	        break;
	    }
  		return $block;
}

חשוב להדגיש שב-Drupal API יש את כל ה-hookים האפשריים בכל הגרסאות ומידע רב נוסף.

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט. הפרויקט הוא הפרויקט הספרותי המוביל בהדסטארט. בשיתוף הקריה האקדמית אונו.
דרופל

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

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