תצוגת breadcrumb באתר
שלום,
אני רוצה להציג באתר בפרונט את סרגל פרורי הלחם, אני עובדת עם sub theme של fusion .
כרגע זה רק מציג לי "בית" .
לא ברור לי מאפוא זה מגיע כי זה לא מופיע ב setting של ה Theme - רק מוגדר אם כן או לא להציג סרגל פרורי לחם והגדרתי ל כן להציג.
איך שולטים על הכיתוב הזה, ולמה זה מציג רק "בית" ולא את כל ה Path של הדף שנמצאים בו ?
אני עובדת עם clean url.
תודה.

הי עירית, התבנית רק מציגה
הי עירית,
התבנית רק מציגה פרורי לחם ואכן באופן מוגבל למדי. למשל לא ממש מציגה עמודי view או פאנלס ועוד מגבלות..
ישנם כל מיני מודולים שמייעלים את השליטה על כך אך אני מצאתי שרובם או מסובכים לשימוש או מוגבלים וויתרתי.
custom_breadcrumbs.module הוא אחד מהם, את מוזמנת לנסות. אם תצליחי אני אשמח לשמוע חוויית התנסות.
אמיר תייר | TIKKE בונים אתר דרכך
הי, זה לא עובד משום מה. יש
הי,
זה לא עובד משום מה. יש כאן ענייני קוד שצריך לבחוש בהם....
אחרי שקראתי חומר על העניין הזה במשך יום שלם והתבאסתי לגמרי, דבר כל כך בסיסי בכל אתר וכל כך מסובך כאן,
מצאתי את הקוד הזה שצריך להכנס ל template.php ואכן הכנסתי ואכן עובד אבל - אי אפשר להוריד את הפונקציה זה עושה שגיאה באתר, לא משנה מה עושים כולל לדרוס את קבצי ה fusion core , זה די תקוע, כך שעכשיו אני צריכה להתמודד עם הפונקציה הזו, שסך הכל עושה עבודה טובה אבל לא לגמרי.
דבר ראשון , כאשר מפענח את ה URL העברית יוצאת בסמנים כאלה:
D7%9C%D7%99%D7%9E%D7%95%D7%93%D7%99-mba-%D7%91%D7%99%D7%A9%D7%A8%D7%90%D7%9C-%D7%AA%D7%95%D7%9B%D7%A0%D7%99%D7%
וצריך איכשהוא לתת קידוד של UTF8 , איך בדיוק?
דבר שני, אם ה URL הוא ככה:
http://www.beyouring.com/content/טקסט עברי
אני לא רוצה שיציג את ה content בתוך ה breadcrumb, והוא כן מציג.
אני רוצה שיציג :
דף הבית - > טקסט עברי
הנה הקוד, לטובת כל המעוניינים:
/*
* Override theme_breadcrumb().
*/
function fusion_core_breadcrumb($breadcrumb)
{
$links = array();
$path = '';
// Get URL arguments
$arguments = explode('/', request_uri());
// Remove empty values
foreach ($arguments as $key => $value) {
if (empty($value)) {
unset($arguments[$key]);
}
}
$arguments = array_values($arguments);
// Add 'Home' link
$links[] = l(t('home'), '');
// Add other links
if (!empty($arguments)) {
foreach ($arguments as $key => $value) {
// Don't make last breadcrumb a link
if ($key == (count($arguments) - 1)) {
$links[] = drupal_get_title();
} else {
if (!empty($path)) {
$path .= '/'. $value;
} else {
$path .= $value;
}
$links[] = l(drupal_ucfirst($value), $path);
}
}
}
// Set custom breadcrumbs
drupal_set_breadcrumb($links);
// Get custom breadcrumbs
$breadcrumb = drupal_get_breadcrumb();
// Hide breadcrumbs if only 'Home' exists
if (count($breadcrumb) > 1) {
return '
';
}
}
הקידוד הלא יוניקודי בurl
הקידוד הלא יוניקודי בurl מופיע רק באקספלורר או גם בכרום ופיירפוקס?
ישראל
גם ב FF וכרום.
גם ב FF וכרום.
אם אני מבין נכון יש כאן שתי
אם אני מבין נכון יש כאן שתי תופעות שאת מתייחסת אליהן
1. למה לא מוצגת כותרת העמוד הנוכחי
2. למה לא מוצג הנתיב המלא לדף שבו אני נמצאת?
את הנושא של כותרת הדף הנוכחי ניתן לפתור באמצעות המודול menu_breadcrumb או באמצעות theming
ראי קוד ב template.php של adaptivetheme שגם מאפשרת להוסיף לברדקרמב את הכותרת באמצעות הגדרות העיצוב ממשק הניהול.
2.
לגבי מיקומנו באתר ? לפי איזה היגיון אנחנו מחשבים אותו?
אם מדובר בעמוד שהגענו אליו בלחיצה על קישור בתפריט, המודול menu_breadcrumb יענה על הצורך. המודול הזה
גם יכול לפתור עבורנו את הנושא של תצוגת כותרת העמוד הנוכחי כחלק מהברדקרמב.
אני מצרף צילום מסך מדף ההגדרות של המודול:
ישראל
תודה, העניין שמרגע שנתקעתי עם
תודה, העניין שמרגע שנתקעתי עם הפונקציה הזו שום דבר מהמודולים שעוסקים ב breadcrumb לא עובד והשאלה איך יוצאים מזה....
נניח ואני מוחקת את התוכן של הפונקציה ומשאירה רק את השם שלה כדי לא לקבל שגיאות באתר, זה נראה לך פתרון הגיוני? יש לזה פתרון בכלל פרט להתקנה מחדש של כל המערכת - שאני מאוד הייתי רוצה להמנע מכך?
תודה.
פתרון זמני מבוסס על התשובה
פתרון זמני מבוסס על התשובה שלך היה כזה:
לאפשר את המודול menu breadcrumb , שזה באמת מודול נחמד מאוד ופשוט, ובפונקציה , לא מחקתי אותה רק שמתי את השורה:
if (count($breadcrumb) > 1)
{
return '
';
}
וזה בעצם מאפשר למודול להראות את ה breadcrumb כי בלי השורה הזו זה בכלל לא עובד ולא רואים כלום באתר.
עדיין לא פתרתי את כל הספור כי במקום "בית" אני רוצה שיהיה שם האתר וכן אם אני נמצאת בדף שיש לו רמה אחת אחורה הוא לא מציג את הרמה הקודמת. למשל :
בית - > מאמרים - > שם המאמר, הוא יציג רק
בית - > שם המאמר.
כך שאת זה עדיין נותר לפתור בצורה כלשהיא, אשמח לעיצות....
תודה.
מעניין, פונקציית הtheme הזו
מעניין, פונקציית הtheme הזו של פיוז'ו האם.
לא שמתי לב ממבט ראשון שהם יוצרים ברדקרמב שמבוסס על הURL. יכול להיות שימושי.
אבל נראה שעבורך, כרגע, לא כל כך..
זה גם עשוי אולי להסביר את הבעיות בקידוד.
אני הייתי מחזיר את הפונקציה של פיוז'ן אמא למצבה המקורי ויוצר template.php חדש בתבנית הבת. בכדי להתחיל מחדש על נקי.
את יכולה להעתיק לשם את פונקציית הtheme המקורית - מתוך theme.inc שבתיקייה includes של ה core , מתחיל שורה 1220.
/*** Return a themed breadcrumb trail.
*
* @param $breadcrumb
* An array containing the breadcrumb links.
* @return a string containing the breadcrumb output.
*/
function theme_breadcrumb($breadcrumb) {
if (!empty($breadcrumb)) {
return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
}
}
אולי כדאי לסלק את תגית הdiv העוטפת.
צריך כמובן לזכור להחליף את המחרוזת theme בשם הפונקציה בשמה של התבנית הבת. ולרענן מטמון, כדי להודיע לרגיסטרי על הפונקציה החדשה.
עכשיו אפשר להיות בטוחים שאנחנו מסתמכים על המודול ללא התערבות של הtheme
מצד שני, הפונקציה שבתבנית האם מדגימה איך אפשר להחליף את "בית" בשם האתר
//Instead of the original
$links[] = l(t('home'), '');
//you can insert your site name via something like
$links[] =variable_get('site_name');
בקשר להצגת קישורים לרמות ביניים של היררכיית המידע:
נראה שהמודול menu_breadcrumb לא מספק כי רמת הביניים אצלך היא לא קישור בתפריט אלא טקסונומי? סוג התוכן ? כלל דינמי כלשהו ?
לכן אולי כדאי לך להוסיף המודול node_bredcrumb או אולי להשתמש בו כתחליף.
ישראל
תודה על התשובה המפורטת
תודה על התשובה המפורטת והמעניינת. אני אוכל להתעמק בזה רק אחרי החג ביום ראשון .
למה אתה מתכוון:
לרענן מטמון, כדי להודיע לרגיסטרי על הפונקציה החדשה
?
נראה כי ב sub theme יש מעין ירושה של קבצי ה core של theme ה"אם" השאלה אם הכנסה של template.php לתוך ה sub theme לא תייצר בעיות?
רמת הבינים בחלקה היא תפריט ואז זה עובד בסדר, קצת קשה לי להסביר אבל הנווט לוקח את השם של ה item בתפריט ואני רוצה שיקח גם את השם של ה menu עצמו, אני לא יודעת אם זה אפשרי. למשל אם יש תפריט ששמו הוא "מאמרים" ויש לו אייטם שנקרא " ספרות" הנווט יציג:
בית-> ספרות.
שזה גם בסדר, יחסית למצב הקודם...
אני רוצה שיציג:
בית->מאמרים->ספרות
זה אפשרי בכלל?
באופן עקרוני מנסיון , אני לא אוהבת להסתמך על דברים שמגיעים מה URL בטח לא בתוך ליבת הדרופל, זה מתכון בטוח לפרצת אבטחת מידע. כמה שיותר להשען על מידע שמגיע מהדטה בייס וכמה שפחות על מידע שמגיע מה URL.
תודה וחג שמח, אעדכן אחרי החג איך הלך....