פוסט זה הוא גרסה מעודכנת של פוסט אחר.
דרופל 5 מציגה את מנגנון ההפצות. החל מגרסה זו ניתן להגדיר מראש תצורות שונות של התקנה (profiles), שכוללות רכיבים (מודולים) שנבחרו במיוחד לכל תצורה, על מנת להגשים ייעוד מסויים שלשמו מותקנת המערכת.
על מנת להפוך את המערכת ליעילה יותר ומהירה יותר, קובץ הסגנונות הראשי (misc/drupal.css) פורק, וכעת כל מודול, גם אלו השייכים ל-core, מכיל, במידת הצורך, קובץ CSS שנטען רק אם המודול המדובר נבחר ברשימת המודולים. כך כמות הקבצים הנטענים קטנה, ומתוך כך גם זמן הטעינה.
נוסף על כך, בדרופל 5 נעשה שימוש בגישה מדליקה להקטנת זמן הטעינה - עיבוד מקדים לקבצי CSS, או Preprocessing, עליו אסביר בנפרד.
העובדה שהקבצים פוזרו בין כל המודולים, הופכת את מלאכת העברות למעט מסורבלת יותר, בשל העובדה שצריך לערוך קבצים מרובים ולא קובץ אחד. לשמחתנו - בכל גרסה של דרופל נצטרך לעשות את זה רק פעם אחת :) !
העברות עצמו כוסה כאן כבר בהרחבה, עד כמה שניתן להרחיב (הופכים ימין לשמאל ולהיפך בהגדרות ה-CSS, ומשתדלים לא לעשות את זה איפה שלא צריך...).
בגרסת RC2 של דרופל 5 (הגרסה העדכנית בעת כתיבת שורות אלו) ישנם 12 מודולים שהסגנונות שלהם דורשים התייחסות. בכל תיקיה של אחד המודולים האלה יש קובץ CSS שאת שמו נשנה באופן הבא: modulename.css הופך ל- modulename-rtl.css. כעת נוספו לנו הקבצים הבאים (מצורפים):
admin-rtl.css, aggregator-rtl.css, block-rtl.css, book-rtl.css, comment-rtl.css, defaults-rtl.css, forum-rtl.css, help-rtl.css, node-rtl.css, search-rtl.css, system-rtl.css, user-rtl.css
על מנת להיצמד למגמת הייעול שבבסיס ביזור הקבצים, עלינו לטעון רק את הקבצים החדשים, במקום אלו הקיימים. בדרופל 5 נעשית טעינת קבצי CSS ע"י קריאה לפונקציה drupal_add_css. פונקציה זו מגדירה כל קובץ CSS כשייך למדיה מסוימת (all, screen, paged וכו') וכמו כן, לאחת משתי קטגוריות: module, theme. החלוקה נעשית על מנת להבטיח שהסגנונות יטענו בסדר הגיוני, ושהדירוג שלהם יהיה ברור יותר. כל קריאה לפונקציה מוסיפה אלמנט למערך חדש, הזמין דרך מנועי העיצוב - css$.
הכנסת הסגנונות למערך היא חלק מהגישה המקובלת היום בדרופל, שבה הכל מוכנס לתוך מערכים, מה שמאפשר לשנות אלמנטים שעד כה היה צורך בתעלולים מני תעלולים שונים על מנת לשנותם. לדוגמה:
drupal_add_css(drupal_get_path('module', 'menu') .'/menu.css');
בכדי לקרוא לקבצים החדשים, המעוברתים, במקוםאלו הקיימים, עלינו לשנות את האלמנטים המתאימים במערך שנוצר. את התוספות הבאות יש להכניס בקובץ page.tpl.php, במקום הקריאה לסגנונות (styles$), ולא בקובץ phptemplate, כפי שעשינו עד כה:
<?php
/* Load RTL styles instead of default ones: */
foreach($css as $media => $types){
foreach($types as $type => $files){
foreach($files as $file => $preprocess){
$element = $file;
$rtl_style = str_replace(".css","-rtl.css",$file);
if(file_exists($rtl_style)){
unset($css[$media][$type][$file]);
$css[$media][$type][$rtl_style] = $preprocess;
}
}
}
}
?>
פעולה זו רק משנה את המערך הדפולטיבי של הסגנונות. בכדי לגרום למערך המתוקן להיטען במקום המערך הדפולטיבי, נבצע את השינוי הבא:
<?php
//print $styles // commented out in favour of drupal_get_css($css) to include the rtl styles
print drupal_get_css($css) ;
?>
זהו. מצורף קובץ ובו הקבצים המעוברתים. תצטרכו לעבוד קצת ולהתאים כל קובץ לתיקיתו הוא, אבל זה שטויות.
תודה לזוהר
תודה לזוהר על קבצי ה-CSS של ה-Core. פנטסטי!
הם שירתו אותי יפה בהסבת ה-CSS של Garland RTL לגירסה 5.
גירסה מעודכנת של קובץ ה-ZIP, שכוללת גם עברות של מודול ה-color, ניתן למצוא כאן: http://www.drupal.org.il/node/388
אמנון לבב - לבבי ייעוץ משולב
אימון אישי בדרופל, ניהול פרוייקטי דרופל, ייעוץ טכנולוגי והדרכה
עדכון נוסף
בעברות של לבבי ל-graland, הוא שם את קבצי ה-CSS בתוך sites/all . אני מאמץ את הגישה ומשכלל אותה עוד קצת.
את הקבצים שמתי בתוך תיקיה חדשה שיצרתי:
sites/all/cssואת הקוד שב-page.tpl.php שיניתי ל:
<?php/* Load RTL styles instead of default ones: */
foreach($css as $media => $types){
foreach($types as $type => $files){
foreach($files as $file => $preprocess){
$element = $file;
$rtl_style = str_replace(".css","-rtl.css",basename($file));
if(file_exists('sites/all/css/'.$rtl_style)){
unset($css[$media][$type][$file]);
$css[$media][$type]['sites/all/css/'.$rtl_style] = $preprocess;
}
}
}
}
//print $styles // commented out in favour of drupal_get_css($css) to include the rtl styles
print drupal_get_css($css) ;
?>
עכשיו הרבה יותר קל לפתוח את הקבצים ולנהל אותם.
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
re: מיקום קבצי css ימניים
שלום זוהר, אני מתנגד לשיפור שהצעת.
אמנון לבב - לבבי ייעוץ משולב
אימון אישי בדרופל, ניהול פרוייקטי דרופל, ייעוץ טכנולוגי והדרכה
re: מיקום קבצי css ימניים
נכון שמיקום של כל קובץ בתוך תיקיה הנושאת את שם המודול המקורי עשוי לשמור על סדר. אבל אז בכל זאת נשאלת השאלה: באיזו תיקיה נציב את הקבצים?
יש לנו שתי אפשרויות בברירת המחדל:
sites/all/modules - תיקיה זו מיועדת למודולים שלמים. דרופל תחפש כאן מודולים, ואם היא תמצא אותם כאן, היא לא תחפש אותם במקום אחר. אין הגיון לשים כאן תיקיות שמכילות רק את קבצי ה-CSS.
sites/all/themes - בדומה לתיקיה modules, תיקיה זו מכילה ערכות עיצוב. קובץ CSS כשלעצמו איננו עיצוב, אלא אם הוא שוכן בתת תיקיה של עיצוב אחר. כלומר, אם נוסיף לתיקיה זו תתי-תיקיות עם שמות המודולים, לא תרמנו לסדר, אלא להיפך.
אם כן - ברירות המחדל לא טובות לנו, ולזרוק את הקבצים סתם בתיקיה sites/all גם לא. על כן הוספתי את התיקיה sites/css, שיכולה היתה לשבת בכל מקום אחר (היא לא חלק מההגיון הפנימי של דרופל). המיקום רק מאפשר לי לפנות לכל הקבצים בצורה מסודרת.
אני לא מבין את הנקודה השניה שלך:
ככה המפתח יוכל לראות את הקבצים של המודול יחד עם המודול
אנחנו הרי לא מעבירים את המודול כולו לתיקיה sites/all, אז איך יכול המפתח לראות את הקובץ יחד עם המודול שלו? האם התכוונת לשם המודול?
אני חושש שייצור תיקיות המוני רק יכביד ויסבך. בואו לא נשכח שחיפשנו פתרון שייקל עלינו. יצירת עוד תיקיות, כמספר המודולים הקיימים, לא מקלה. כבר עדיף לחזור לפתרון המקורי של הצבת הקבצים בתוך תיקיות המודולים עצמם.
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
<
p>
זהר סטולר, לינווייט
לינווייט תשתיות תוכן קהילתיות
re: מיקום קבצי css ימניים
OK, הבנתי, לטיפולך.
זוהר, כל הרכיבים contrib ממילא מומלץ לשים אותם בתיקיה sites/all/modules, כך שאני לא יצרתי שום תיקיה חדשה לרכיבי ה-contrib, רק לרכיבי ה-core. זהו המקום המומלץ על ידי דרופל, והעדפתי להשתמש באותו מבנה, כדי שנדע כל קובץ מאיפה הוא הגיע. אבל במחשבה שנייה - אתה צודק. גם לגבי רכיבי ה-contrib לא כדאי לשים את קבצי ה-css הימניים יחד עם המודול.
נתתי לך הרשאה להיכנס ל-CVS של garlandrtl כדי לבצע את השינוי.
בהמשך כדאי אולי לנהל את קבצי ה-RTL של המודולים כפרוייקט נפרד, שלא קשור לגרלנד, ויכיל את כל קבצי ה-CSS הימניים (כולל של רכיבי contrib). אבל כרגע זה נראה כמו overkill וקובץ הזיפ נראה מספיק.
אמנון לבב - לבבי ייעוץ משולב
אימון אישי בדרופל, ניהול פרוייקטי דרופל, ייעוץ טכנולוגי והדרכה
מיקומי קבצי CSS ימניים - נתיב לתמונות
נראה לי שיכולה להיות כאן בעיה
הנושא הוא מיקומי קבצי התמונות שה CSS מתיחס אליהם למשל אני מקבל הודעת שגיאה ב LOG על 404 על grippie.png
בבדיקה שלי הוא מחפש את התמונה בנתיב sites/all/misc/grippie.png, בגלל שב system.-rtl.css יש הפניה ל נתיב יחסי
.resizable-textarea .grippie {height: 9px;
overflow: hidden;
background: #eee url(../../misc/grippie.png) no-repeat center 2px;
border: 1px solid #ddd;
border-top-width: 0;
cursor: s-resize;
}
ואז הוא כמובן לא ימצא את זה
בקיצור יש 2 אפשרויות
1. לשים את קבצי ה RTL במחיצה של המודול עצמו
יתרון : קלות הגיור של ה CSS
חסרון : שדרוג האתר יהיה "קשה" יותר כי יש ערבוב של קבצי בסיס וקבצים של העיברית
יתרון : שדרוג אתר קל יותר, מיקום מרכזי
חסרון : גיור ה CSS יהיה מסובך טיפה יותר, כי יהיה צורך להתיחס לתמונות בנתיב מלא ולא יחסי
אבל הבעיה היותר קשה היא שיכול להיות מצב בו המודול מגיע עם מחיצת תמונות משלו ואז ההפניה אל התמונות יכולה להיות מאוד בעייתית
אביאור
http://dev-art.net
אביאור
http://dev-art.net
מיקום קבצי CSS
בתצורה מס' 2, אפשר לפתור את הבעיה על ידי הצבת קישור סימבולי לתיקיה misc (ולתיקיות אחרות עם תמונות) בתוך sites/all/css. הבעייה בתצורה מספר 2 היא ניהול גירסאות. אנחנו ממציאים ספרייה חדשה, שאינה קיימת בגירסה האנגלית ולא ברור איפה לשמור את הקבצים ב-CVS.
תצורה מספר 1 מאפשרת איכשהו לנהל את הגירסאות אולם אינה מאפשרת ניהול מרוכז של קבצי ה-CSS הימניים.
ההחלטה לגבי מיקום הקבצים צריכה להתקבל בשיתוף צוות ניהול הגירסאות של drupal.org. הנה קישור לדיון שמתנהל בנושא:
http://drupal.org/node/56110
אמנון לבב - לבבי ייעוץ משולב
אימון אישי בדרופל, ניהול פרוייקטי דרופל, ייעוץ טכנולוגי והדרכה
מיקום קבצי ה-CSS השתנה
והם עכשיו יושבים באופן שטוח תחת GarlandRTL, עם אופציה לקרוא אותם מהספרייה של המודול עצמו (טוב במקרה שיש bitmaps). גרלנד RTL מחפש עכשיו בשני המקומות.
מידע נוסף: http://www.drupal.org.il/node/484
אמנון לבב - לבבי ייעוץ משולב
אימון אישי בדרופל, ניהול פרוייקטי דרופל, ייעוץ טכנולוגי והדרכה
קבצי CSS מגויירים בגרסה 5 - מה הוחלט ?
מכל התגובות כאן - אני עדיין לא סגור על המיקום
חשוב מאוד שנסגור את זה
האם הוחלט על מיקום ?
נראה לי הכי נכון לשים את זה במחיצה של המודולים עצמם
זה לא אמור להשתנות כ"כ לכן אין בעיה של תחזוקה
אביאור
http://dev-art.net
אביאור
http://dev-art.net
אני בעד לשים אותם במודולים עצמם
כי:
זה יהיה ברור הרבה יותר כשיהיו לנו 5 עיצובים מעוברתים, ונכניס את כל הקוד של בחירת ה CSS אל תוך רכיב נפרד..
זה דורש טיפה יותר מאמץ מהמתקין, אבל אפשר לחסוך אותו בעזרת ערכת ההתקנה העברית.