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

הוספת סוג חדש של פרמטר לג'ומלה

רן בר-זיק אפריל 22, 2010 2:10 pm אין תגובות

הוספת סוג חדש למגוון הפרמטרים האפשריים בבניית מודול לג'ומלה.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

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

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

ג'ומלה מאפשרת לנו ליצור פרמטרים משל עצמנו בקלות רבה מאד באמצעות תוספת קטנה של קוד למודול שלנו ואת הקלות והיעילות של ג'ומלה במקרה הזה אני אדגים כאן באמצעות הוספת פרמטר שיאפשר לי לבחור מספר של משתמשים ב-multiple select list.

יצירת קובץ PHP שאחראי על הפרמטר

אנו ניצור קובץ בשם multiplechoiceusers.php ונמקם אותו בתיקיה של המודול שלנו. כרגע אנחנו לא ניגע ב-multiplechoiceusers.php אלא נכניס לתוכו תוכן מאוחר יותר.

הגדרת הקובץ במודול

אנו נגדיר את הקובץ שיצרנו בתוך ה-XML של המודול שלנו:


<param name="fusers" type="multiplechoiceusers"  default="" label="Multiple Featured Users" description="Please select Multiple Users using the Ctrl button while clicking" />

בהגדרת הפרמטרים אנו נוסיף תכונה של -addpath ונכניס את ה-path של המודול שלנו באופן הבא:


<params addpath="/modules/YOUR_MODULE">

כש-YOUR_MODULE הוא השם של המודול שלנו. כך למשל, יראה הפרמטר שלנו אם הוא בודד:


<params addpath="/modules/YOUR_MODULE">
<param name="fusers" type="multiplechoiceusers"  default="" label="Multiple Featured Users" description="Please select Multiple Users using the Ctrl button while clicking" />
</params>

מה שחשוב ב-xml הוא ה-type שצריך להיות זהה לחלוטין לשם קובץ ה-PHP שלנו. במקרה הזה ה-type שהגדרנו ב-XML הוא: multiplechoiceusers והוא זהה לחלוטין לשם קובץ ה-PHP שלנו.

הכנסת תוכן לקובץ ה-PHP שלנו

קובץ ה-PHP שיצרנו קודם: multiplechoiceusers.php צריך לקבל חיים. אנו יוצרים class שמרחיבה את JElement ובתוכה מכניסים שאילתה ל-DB ויוצרים את תיבת הטקסט multiple. נשמע מסובך? זה ממש לא:


<?php 
//Creating Class JElementmultiplechoiceusers
class JElementmultiplechoiceusers extends JElement {
//Method of JElement, used for entering new paramter
  function fetchElement($name, $value, &$xmlElement, $control_name )
  {
	//Our Query
  	$query = 'SELECT id AS value, username AS text FROM #__users;'; //
  	//calling to DB and executing the query to options var
  	$db = &JFactory::getDBO();
    $db->setQuery($query);
    $options = $db->loadObjectList();
  	//Returning html element generated by JHTML.
    return JHTML::_('select.genericlist',  $options, ''.$control_name.'['.$name.'][]', 
      'class="inputbox" size="15" multiple="multiple"',
      'value', 'text', $value, $control_name.$name);
  }
}

ב-class שלנו יש מתודה אחת בשם fetchElement שהיא זו שאחראית על יצירת הפרמטר והממשק שלו. המתודה היא מתודה של JElement והיא מחזירה את אלמנט ה-select שלנו. מה שיש בה זו השאילתה שהיא שאילתה פשוטה שמחזירה את כל המשתמשים. שימו לב שבשאילתה הנתונים מתקבלים לפי value שזה הערך של ה-option שיהיה ו-text שזה הלייבל של ה-option.
JHTML זה אובייקט שמחזיר HTML וקיים לא מעט פעמים בג'ומלה. שימו לב שהוא מקבל גם את ה-options$ וגם פרמטרים אחרים שמגיעים מה-fetchElement.

ו… זהו! אם תפעילו את המודול תוכלו לראות שיש פרמטר כזה ואפשר להשתמש בו. איך אנו משתמשי בו? בדיוק כמו כל פרמטר אחר ובדוגמה שלנו:


$params->fusers

כאשר אנו נקבל מערך, כיוון שמדובר בכמה וכמה אפשרויות שאפשר לבחור.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
OOP ג'ומלה פתרונות
ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-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 | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

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