[Skip Header and Navigation] [Jump to Main Content]
בית
דרופל ישראל
הבית של קהילת מפתחי ומשתמשי דרופל בישראל

Primary Links

  • בית
  • דרופל בעברית
  • חדש באתר
  • מדריכים
  • תמיכה
  • לוח דרושים
  • נותני שירות בדרופל
  • אתרי דרופל ישראליים
  • שאלות נפוצות
  • ארועים והדרכות
בית » יומן » הבלוג של yakoub

קיבוץ שדות בדרופל 7

yakoub, א', 28/08/2011 - 21:22

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

ביצעתי את זה על ידי הגדרת סוג שדה , הממשק מוגדר פו field types api :

הגדרת הסכימה בקובץ install :

<?php
function field_example_field_schema($field) {
 
$schema = array();
  if (
$field['type'] == 'fx') {
   
$schema['columns'] = array(
     
'weight' => array(
   
'type' => 'float',
 
'size' => 'small',
      ),
     
'height' => array(
  
'type' => 'float',
 
'size' => 'small',
      ),
    );
  }
  return
$schema;
}
?>

הגדרת השדה כוללת :
הגדרת טופס hook_field_widget_form

<?php
function field_example_field_info() {
 
$info = array();
 
$info['fx'] = array(
   
'label' => 'field example',
   
'description' => 'field example',
   
'default_widget' => 'field_example_fx',
   
'default_formatter' => 'field_example_fxf',
  );
  return
$info;
}

function
field_example_field_widget_info() {
 
$info = array();
 
$info['field_example_fx'] = array(
   
'label' => 'field example default',
   
'field types' => array('fx'),
  );
  return
$info;
}

//  height and weight coresponds to columns structure in install file
function field_example_field_widget_form(&$form, &$form_state,
 
$field, $instance, $langcode, $items, $delta, $element) {

 
$element['height'] = array(
   
'#type' => 'textfield',
   
'#title' => 'height',
   
'#default_value' => 0,
  );
 
$element['weight'] = array(
   
'#type' => 'textfield',
   
'#title' => 'weight',
   
'#default_value' => 0,
  );
  if (isset(
$items[$delta])) {
   
$element['height']['#default_value'] = $items[$delta]['height'];
   
$element['weight']['#default_value'] = $items[$delta]['weight'];
  }
  return
$element;
}


//    this hook is important, since field_default_submit will filter empty values
//  so if the logic implemented here is wrong then submitted values won't be saved

function field_example_field_is_empty($item, $field) {
  return empty(
$item['height']) and empty($item['weight']);
}
?>

והגדרת תצוגה hook_field_formatter_view :
<?php
function field_example_field_formatter_info() {
 
$info = array();
 
$info['field_example_fxf'] = array(
   
'label' => 'field example',
   
'field types' => array('fx'),
  );
  return
$info;
}


//   display items in table
function field_example_field_formatter_view($entity_type, $entity,
 
$field, $instance, $langcode, $items, $display) {
 
$rows = array();
  foreach (
$items as $delta => $item) {
   
$rows[] = array($item['height'],$item['weight']);
  }
 
$element[0] = array(
   
'#theme' => 'table',
   
'#header' => array('height', 'weight'),
   
'#rows' => $rows,
  );
  return
$element;
}


//    changing parent #type from container to collapsible fieldset
// depends on actual name for the field in field ui or in field_create_field
function field_example_form_page_node_form_alter(&$form, &$form_state, $form_id) {
 
$form['field_fff']['#type'] = 'fieldset';
 
$form['field_fff']['#title'] = 'fx';
 
$form['field_fff']['#collapsible'] = TRUE;
?>

היתרון בהגדרת סוג שדה שאפשר להגיד number of values = unlimited ומקבלים הוספת ajax ל שדה חדש וגם טבלת מיון בחינם

  • הבלוג של yakoub
  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.
תגים:
  • פיתוח רכיבים
התמונה של amitai

נראה לי שמה שאתה באמת מחפשֿ/

נכתב ע"י amitai ביום ד', 31/08/2011 - 17:27.

נראה לי שמה שאתה באמת מחפשֿ/ צריך זה mongodb, ואז אתה לא צריך שום שדות קאסטם.

אמתי -- חברת גיזרה

  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.
התמונה של yakoub

מונגו

נכתב ע"י yakoub ביום ד', 31/08/2011 - 20:11.

עדיין לא ניסיתי את מונגו , אני יודע שדרופל תומך בו אבל אני עדיין צריך ללמוד על יתרונותיו

אבל מה הבעיה עם שדות קאסטם ?
בינתיים הבעיה היחידה שמצאתי זה עם hook_field_is_empty בגלל זה שמתי ערכים דיפולטים
כי הסתכלתי על field_sql_storage_field_storage_write ושם בונים שאילתה insert בלי לקחת בחשבון שחלק מהשדות יהיו NULL
אז נוצר מצב שכל הערכים או מקבלים ערך או 0 , ואי אפשר למשל לשים height ולהשאיר width ריק

yakoub abaya

  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.
התמונה של amitai

אבל מה הבעיה עם שדות קאסטם

נכתב ע"י amitai ביום ד', 31/08/2011 - 21:33.

אבל מה הבעיה עם שדות קאסטם ?

אני משתמש ב field-collection, מה שחוסך לי כתיבת קוד.

אמתי -- חברת גיזרה

  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.
התמונה של yakoub

טבלאות

נכתב ע"י yakoub ביום ד', 31/08/2011 - 22:16.

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

חוץ מזה , למה לחסוך בכתיבת קוד שהוא פשוט ,קל לקריאה ומשתמש ב field api , ולהחליף אותו במודול קונטריב שהוא מסובך פי כמה ומסתמך על entity api שהוא לא חלק מהליבה ?

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

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

yakoub abaya

  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.
התמונה של yakoub

check_plain

נכתב ע"י yakoub ביום ש', 17/09/2011 - 22:59.

<?php
function field_example_field_formatter_view($entity_type, $entity,
 
$field, $instance, $langcode, $items, $display) {
 
$rows = array();
  foreach (
$items as $delta => $item) {
   
$row = array($item['height'],$item['weight']);
   
$row = array_map('check_plain', $row);   // CHECK_PLAIN
   
$rows[] = $row;
  }
 
$element[0] = array(
   
'#theme' => 'table',
   
'#header' => array('height', 'weight'),
   
'#rows' => $rows,
  );
  return
$element;
}
?>

yakoub abaya

  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.
התמונה של amitai

... לתחזק ...זה בעייה של

נכתב ע"י amitai ביום ב', 19/09/2011 - 12:05.

... לתחזוקה ...

זה בעייה של הפילדים, אי אפשר לתחזק אותם -- http://drupal.org/node/937442

אמתי -- חברת גיזרה

  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.
התמונה של yakoub

בעיה

נכתב ע"י yakoub ביום ב', 19/09/2011 - 12:35.

זו אכן בעיה שלא הייתי מודע אליה, תודה שהבאתה את זה לתשומת לבי

yakoub abaya

  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.
התמונה של yakoub

הרבה שדות

נכתב ע"י yakoub ביום ה', 10/05/2012 - 11:16.

נניח צריכים לישם ישות דוח פיננסי שיש בו 30 שדות, ב field ui זה אומר 30 טבלאות, כלומר בשביל לעשות node_load צריך שאילתה עם 30 inner join, כי אין מנגנון שמאפשר טעינה חלקית של השדות למשל עבור teaser display

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

yakoub abaya

  • חברי האתר יכולים לשלוח תגובה - כניסה , הצטרפות.

איפה מתחילים ולאן ממשיכים?

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

להורדת דרופל בעבריתלשפות וגרסאות אחרות, Drupal.org

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

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

שלום אורח

כניסה|הצטרפות

כעת מחוברים 4 משתמשים מזוהים, ו-4 אורחים:
נס טכנולוגיות, ami7878, zohar, גגה

alechko הוא החבר הכי חדש בקהילה!

דרופל ישראל בפייסבוק דרופל ישראל בטוויטר דרופל ישראל ב-LinkedIn

חדש בדיונים בפורום

  • taxonomy vs entity reference |‏ alechko
  • LAPP במקום LAMP |‏ hodspot
  • האם דרופל יכול לבנות אתר כמו י... |‏ hodspot
  • Web programmer |‏ meiravshir
  • server/Client Web Developer |‏ meiravshir
עוד בפורום

חדש בבלוגים

  • ecommerce module |‏ avrilev
  • הסרת שיער בלייזר |‏ Alex Borodach
  • ערכת עיצוב חדשה FontFolio... |‏ ישראל
  • Mobile Drupal - סיכום הדרכה |‏ לבבי
  • תרגום אוטומטי של ממשק האתר באת... |‏ לבבי
עוד בבלוגים

אירועים והדרכות קרובות

אין פעילויות להצגה. יאללה, מי מארגן משהו?

ללוח האירועים המלא

חדש באתרים ישראלים

  • טבעוני תוספי תזונה |‏ morantivo
  • עוגת הגבינה של ישראל - ישראל ה... |‏ zohar
  • דורמטיק - דלתות אוטומטיות |‏ ענת כהנא
  • הכוורת - אתר מבוסס קומונס |‏ אמנון דפני
  • אוצר היום - ישראל היום |‏ zohar
עוד אתרים ישראלים
Powered by Drupal, an open source content management system
אירוח ופיתוח האתר באדיבות לינווייט - דרופל , אנדרואיד וקוד פתוח
עיצוב, קסמי css וערכת העיצוב טנדו - תום ביגלאייזן
שותף לדרך - אמנון לבב - ייעוץ משולב
דרופל ישראל הינה חלק מרשת הקנטינה
"כללי המשחק" ותנאי השימוש באתר
[Jump to Top] [Jump to Main Content]