Drupalcon Szeged 2008

בעיה בשינוי העיצוב של description

שלום,

אני רוצה לשנות את ה- description שמופיע תחת השדות ב- form.
המעצב שלי הכין לי למעשה הכל, אבל אני נתקלת בקושי לשלב את זה בדרופל.

הוא הכין את הקוד ב- css:

#tip{
  width:134px;
  background:#d1eaee url(images/tip_bg1.gif) top no-repeat;
}

#tip .inner{
  width:100%;
  background:transparent url(images/tip_bg2.gif) bottom no-repeat;
}

#tip p{
  font: 12px Arial, Helvetica, sans-serif;
  color:#657680;
  margin:0;
  padding:2px 12px 3px 7px;
}

tp_bg1, tp_bg2 הם שני  החלקים מהם מורכב ה"טיפ" החדש.

ומה שנשאר לי, למעשה, זה להגדיר את div id="tip"
ואת dic class = "inner"

ניסיתי להוסיף ב- template.php
את:
function tip($description){
return _phptemplate_callback('tip',array('description' => $description));
}

וכאן נתקעתי.

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

האם הפעולות שעשיתי עד כאן נכונות?
איך אני מתקדמת מכאן?

תודה, ענת

בעניין: בעיה בשינוי העיצוב של description

למה לא פשוט לשנות את ה-css של description? במקום לקרוא לו 'tip' ולנסות להוסיף אותו דרך הטמפלייט.
שנית- אם את רוצה לשנות את משתני הטמפלייט את צריכה את http://api.drupal.org/api/function/_phptemplate_variables/5
הפונקציה שקראת לה, מטרתה היא ליצור קובץ tpl מיוחד עבור מה שאת רוצה להציג.

אורן זוסמן, לינווייט
לינווייט תשתיות תוכן קהילתיות

description

תודה, אורן.

אכן אני יוצרת קובץ tpl מיוחד בו מוגדרים tip , inner
הסיבה שאני לא יכולה להסתפק בשינוי ה- css
היא שהרקע מורכב משני אימג'ים - עליון ותחתון.

הבעיה שלי היא בקובץ ה- tpl
אני לא בטוחה מה צריך להיות שם.

ניסיתי להגדיר את tip , inner ואז:

<?php
 
if ($description) {
    print
' <div id="tip"> <div class="inner"> '. $description ."</div>\n";
  }
?>

ללא הצלחה

אגוז קשה

בשביל ליצור tpl, את צריכה לקרוא לפונקציית theme מסוימת. (בפוסט הראשון מופיע משהו שונה)
אם יש למשל פונקציית theme_item, את קוראת לmythemename_item, ושם מנתבת אותו ל-tpl.
החדשות הרעות הן, שבדרופל 5, אין דבר כזה theme_description.
AFAIK, בשביל לעשות דבר כזה צריך ליישם פונקציית theme עבור כל form-item (כלומר, עבור פילדסט, עבור טקסט, וכו').
לכן - נראה לי שפשוט יותר למצוא חלופה CSSית (אולי בכ"ז אפשר אימג' אחד??)
ואולי, את את טובה ב-JS, להכניס באמצעותו, למרות שאולי זה לא יותר פשוט מהדרך למעלה.

אורן זוסמן, לינווייט
לינווייט תשתיות תוכן קהילתיות

בעניין: אגוז קשה

תודה, אנסה להסתפק ב- css

בעניין: בעניין: אגוז קשה

התבנית זאן, קיימת כדי לאפשר בנייה קלה של תבניות. אולי זה יתאים לך.http://drupal.org/project/zen

הצעה לנסיון

נסי את הקוד הבא (הימור שלי):

<?php
function theme_form_element($element, $value) {
 
$output  = '<div class="form-item">'."\n";
 
$required = !empty($element['#required']) ? '<span class="form-required" title="'. t('This field is required.') .'">*</span>' : '';

  if (!empty($element['#title'])) {
   
$title = $element['#title'];
    if (!empty(
$element['#id'])) {
     
$output .= ' <label for="'. $element['#id'] .'">'. t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) ."</label>\n";
    }
    else {
     
$output .= ' <label>'. t('!title: !required', array('!title' => filter_xss_admin($title), '!required' => $required)) ."</label>\n";
    }
  }

  $output .= " $value\n";

/* This is my change: */

  if (!empty($element['#description'])) {
   
$output .= ' <div class="description tip"><div class="inner">'. $element['#description'] ."</div></div>\n";
  }

  $output .= "</div>\n";

  return $output;
}
?>

זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות

בעניין: הצעה לנסיון

דבר נוסף - אל תשתמשי ב- #tip מכיוון שיהיה לך יותר מאחד כזה בטופס. השתמשי ב-class.

זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות

תודה

הרבה תודה על הכל,
אבל נראה לי שאצטרך לבקר אתכם כדי לקבל עוד קצת עזרה :)

בעניין: תודה

רגע - עוד נסיון - היתה לי טעות בקוד שצירפתי קודם:
שם הפונקציה צריך להתחיל ב-phptemplate במקום ב-theme, והפונקציה צריכה לשבת בקובץ template.php שבתיקית העיצוב.

זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות

יש!

הצליח.
כל הכבוד, זהר,
והמון תודה על הסבלנות והעזרה.