תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

כיצד לפתח מודול בדרופל 7?

מחבר:
בתאריך:

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

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

קובץ module

hook_menu(), מייצר דף אינטרנט עם כתובת URL. במקרה זה, ההוק לא מכניס את הלינק לשום תפריט, ורק מייצר דף שיש לו פונקציונליות מסוימת.

הקוד נראה כך:

/**
* Implementation of hook_menu().
*/

function cache_flash_menu() {
  $items['cache_flash/form'] = array(
    'title' => 'The Cache Flasher',
    'page callback' => 'drupal_get_form',
    'page arguments' => array( 'cache_flash_form'),
    'access callback' => TRUE,
  );
 
  return $items;
}

 

בתוך ההוק, בין סוגריים מסולסלים, אנחנו יוצרים מערך אסוציאטיבי $items עם כתובת ה-URL של הדף ['cache_flash/form']. כדי לראות שאכן נוצר דף (node), אחרי שתפעילו את המודול, גלשו לכתובת ה-URL.

בתוך המערך אנחנו מוסיפים את פרטי הדף שניצור באמצעות זוגות של מפתח וערך:

title – מגדיר את כותרת הדף שתופיע בין תגיות h1,

page callback - קורא לטופס שבתוכו ישובץ הכפתור, באמצעות drupal_get_form. מכיוון שהפנינו לטופס עלינו להגדיר את הפונקציה שמייצרת את הטופס, ואת זה אנחנו עושים בשורה הבאה, באמצעות page arguments.

access callback – מגדיר מי רשאי לצפות בבלוק. כרגע, הבלוק מוגדר לצפייה לכל סוגי המשתמשים.

 

נפעיל את המערך שיצרנו באמצעות:

return $items;

 

הוספת טופס למודול

עכשיו, נוסיף את הטופס ש-page callback קורא לו:

/**
*  Implementation of hook_form().
*/

function cache_flash_form($form, &$form_submit) {
  $form['flash_cache_text'] = array(
    '#type' => 'markup',
    '#markup' => '<p>'.t('Press to flush all caches').'</p>',
  );
 
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Press Me!'),
    '#submit' => array('cache_flash_form_submit'),
  );
 
  return $form;
}

הפונקציה שיוצרת את הטופס כוללת את שם המודול ואת המילה form. הטופס כולל שני מערכים. המערך הראשון מוסיף הטמ"ל לטופס ('type' => 'markup#'), והמערך השני מוסיף כפתור שליחה 'type' => 'submit#'  , שלחיצה עליו קוראת לפונקציה חיצונית מסוימת, ובמקרה זה לפונקציה 'cache_flash_form_submit' שתבצע את ניקוי המטמונים. 

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

 

הוספת פונקציה למודול

לחיצה על הכפתור מפנה לפונקציה שמנקה את זכרון המטמון. כך זה נראה:

/**
*  The function that flushes the caches.
*/

function cache_form_submit($form, &$form_state) {
  drupal_flush_all_caches();
  drupal_set_message('cache flushed.');
}

בתוך הפונקציה שיצרתי (זה לא הוק שמובנה ב-API של דרופל) קיימות שתי פונקציות מובנות של דרופל. הראשונה, מנקה את המטמונים, והשנייה, מייצרת הודעה למסך.

drupal_flush_all_caches();
drupal_set_message('cache flushed.');

 

הוספת בלוק (תיבה) למודול

כדי להוסיף את הבלוק שמציג את הטופס. נשתמש בקוד הבא:

/**
* Implementation of hook_block_info()
*/

function cache_flash_block_info() {
  $block['cache_flash_form'] = array(
    'info' => t('Cache flash form'),
  );
  return $block;
}
 
/**
* Implementation of hook_block_view()
*/

function cache_flash_block_view($delta = '') {
  $block = array();
 
  if('cache_flash_form'){
    $block['title'] = t('Cache flusher');
    $block['content']['0'] = drupal_get_form('cache_flash_form');
  }
  return $block;
}

להצגת הבלוק אנחנו נעזרים בשני הוקים:

(1) hook_block_info

(2) hook_block_view

hook_block_info מכיל את המפתח info שמגדיר את המידע שיוצג בדף הבלוקים באתר דרופל.

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

 

לסיכום, נציג את קובץ ה-module במלואו

<?php
/**
* Implementation of hook_menu().
*/

function cache_flash_menu() {
  $items['cache_flash/form'] = array(
    'title' => 'The Cache Flusher',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('cache_flash_form'),
    'access callback' => TRUE,
  );
  return $items;
  }
 
/**
* Implementation of hook_form().
*/

function cache_flash_form($form, &$form_submit) {
  $form['flash_cache_text'] = array(
    '#type' => 'markup',
    '#markup' => '<p>'.t('Press to flush all caches').'<p>'
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Press Me!'),
    '#submit' => array('cache_flash_form_submit'),
  );
  return $form;
}
 
/**
* The function that flushes the caches.
*/

function cache_flash_form_submit($form, &$form_state) {
  drupal_flush_all_caches();
  drupal_set_message('cache flushed.');
}
 
/**
* The block to hold the form.
*/

function cache_flash_block_info() {
  $block['cache_flash_form'] = array(
    'info' => t('Cache flash form'),
  );
  return $block;
}
 
function cache_flash_block_view($delta = '') {
  $block = array();
 
  if('cache_flash_form'){
    $block['title'] = t('');
    $block['content']['0'] = drupal_get_form('cache_flash_form');
  }
  return $block;
}

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

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

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

מהם שלוש רשויות השלטון בישראל?