Долгое время меня раздражало, что url не соответствует навигации.
Нашел неплохой способ решить проблему тут, но в найденном вареанте был небольшой минус: отсутствует возможнотсть влиять на название _хлебных_крошек_. После небольшой доработки это можно делать с помощью модуля "locales" путём _перевода_ нужных строк.
Например:
при добавлении вида под названием, my_simple_view, в навигации так и будет написано "my_simple_view". Это можно исправить в переводах, переименовать my_simple_view, к примеру в "фотогалерея".
В templates.php пишем:
function get_crumb($lvl) {
$uri_request_id = $_SERVER['REQUEST_URI'];
$urlexplode = explode("?", $uri_request_id);
$url = explode("/",$urlexplode[0]);
if($url[$lvl]){
if($lvl > 1) {
$var = array_keys($url);
foreach($var as $vars){
if($vars == 1){ $urlpathpeice .= $url[$vars]; }
if($vars <= $lvl && $vars > 1){ $urlpathpeice .= '/'.$url[$vars]; }
}
$urlpathalias = $urlpathpeice;
} elseif ($lvl == 1) { $urlpathalias = $url[$lvl]; }
$urlsystem = drupal_lookup_path('source', $urlpathalias);
$urlsystemexplode = explode("/", $urlsystem);
$urltype = $urlsystemexplode[0];
if($urltype == "taxonomy"){
$term = taxonomy_get_term($urlsystemexplode[2]);
if($url[$lvl+1]){
return '<a href="/'.$urlpathalias.'" title="'.$term->name.'">'.$term->name.'</a>';
} else { return ''.t($term->name).''; }
} elseif($urltype == "node"){
$node = node_load($urlsystemexplode[1]);
if($url[$lvl+1]){
return '<a href="/'.$urlpathalias.'" title="'.$nodename.'">'.$node->title.'</a>';
} else { return ''.$node->title.''; }
} else {
$urltitleexplode = explode("-", $url[$lvl]);
$words = array_keys($urltitleexplode);
foreach($words as $word){ $urltitle .= ''.ucwords($urltitleexplode[$word]).' '; }
if($url[$lvl+1]) {
return '<a href="/'.$urlpathalias.'" title="'.$urltitle.'">'.t(trim($urltitle)).'</a>';
} else { return ''.t(trim($urltitle)).''; }
}
}
}
function get_crumb_all() {
$uri_request_id = $_SERVER['REQUEST_URI'];
$urlexplode = explode("?", $uri_request_id);
$url = explode("/",$urlexplode[0]);
$numbs = array_keys($url);
foreach($numbs as $numb) {
$crumbs[] = ''.get_crumb($numb);
}
return implode(' » ', $crumbs);
}
$output .= '<div class="breadcrumb">';
$output .= '<a href="/" title="Home">'.t('Home').'</a>';
$output .= ''.get_crumb_all().'';
$output .= '</div>';
return $output;
}
Далее в page.tpl.php
Комментарии
Путь в "хлебных крошках" соответствует навигации в меню .
Как пропишешь вложенность пунктов меню до текущей страницы - так путь в "хлебных крошках" и отобразится.