נגישות       נגישות
שינוי גודל טקסט:
א א א
שינוי צבעי האתר:
? מקשי קיצור:

לחיצה חוזרת ונשנית על המקש Tab תעביר אתכם בין הקישורים והאזורים השונים בעמוד.

הפעלת מקשי הקיצור תלויה בדפדפן שבו אתם משתמשים.

Internet Explorer, Chrome ובגרסאות ישנות של Firefox: לחצו על מקש Alt ועל מקש המספר או האות על-פי הרשימה. ב Firefox 3 ומעלה: לחצו על המקשים Alt + Shift + המספר או האות.

S - עבור לתוכן הדף
L - חיפוש
1- עמוד הבית
2 - פרוייקטים
3 - מדריכים
4 - אודות
5 - צרו קשר
6 - הצהרת נגישות
 

כיצד לפתח מודול בדרופל 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;
}

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

 

= 8 + 6