Ügyféligény: a morzsa elején jelenjen meg a „Hol vagyok?” kérdés, a végén pedig legyen ott az aktuális oldal címe „inaktív link”-ként, magyarán sima szövegként. Erre a témára több variáció is szerepel a Drupal.hu kézikönyvben – itt egy újabb.
template.php fájlunkban felülírjuk a theme_breadcrumb() függvényt:
<?php
function sminkneve_breadcrumb($breadcrumb) {
$output = '';
if (!empty($breadcrumb)) {
$output .= '<ul class="breadcrumb">';
$output .= '<li>' . t('Where am I?') . '</li>';
foreach ($breadcrumb as $link) {
$output .= '<li>' . $link . '</li>';
}
$title = drupal_get_title();
if (!empty($title)) {
$output .= '<li class="inactive">' . $title . '</li>';
}
$output .= '</ul>';
}
return $output;
}
?>
Az .inactive osztályt CSS-ben szürkítsük ki, hogy egyértelmű legyen, ez nem egy link:
.inactive {
color: #ccc;
}
(Szemantikailag helyesebb lenne a „Hol vagyok?” feliratot a listán kívül elhelyezni, így viszont jóval egyszerűbb a CSS.)
A drupal_get_title() nem kevésbé hasznos párja a drupal_set_title(), ezzel tudjuk szükség esetén módosítani az oldal címét.
Comments
A Zen smink a beállításoknál
A Zen smink a beállításoknál megkérdezi akarod-e feltüntetni az aktuális oldal nevét a morzsa végén.
vagy így
<?phpfunction THEMENAME_breadcrumb($breadcrumb) {
if (!empty($breadcrumb)) {
array_unshift($breadcrumb, t('Where am I?'));
$title = drupal_get_title();
if (!empty($title)) {
$breadcrumb[] = $title;
}
}
return theme('item_list', $breadcrumb, NULL, 'ul', array('class'=>'breadcrumb'));
}
?>
terjengős CSS
Igen, a theme_item_list() a legdrupalosabb megoldás, bár én ritkán használom, mert a design miatt többnyire felül kell írni hozzá a rendszerszintű CSS-t. Arra még nem sikerült rájönnöm, miért hiszik azt a core fejlesztők, hogy a core dolga lenne margók és hasonlók beállítása. :)
function mymodule_init() {
<?phpfunction mymodule_init() {
$bc = drupal_get_breadcrumb();
array_unshift($bc, t('Where am I?'));
if ($title = drupal_get_title()) {
$bc[] = $title;
}
}
?>
Majd CSS-ben
.last.