Делаем хлебные крошки из URL аргументов

В друпале система хлебных крошек по дефолту не удовлетворяет каждого пользователя, поэтому иногда приходится "поработать" над ними вручную. В этой статье мы рассмотрим способ, при помощи которого будут создаваться "хлебные крошки" из URL. Например мы имеем следующий URL адрес: mysite.org/news/newstitle, в результате в хлебных крошках мы увидим - Home >> News >> newstitle.

Создаем файл template.php, если он у вас еще не создан. Затем вставляем следующий код в него:

<?php
/**
* Override theme_breadcrumb().
*/

function [YOUR-THEME-NAME]_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'), '<front>');

  // Add other links
  if (!empty($arguments)) {
    foreach ($arguments as $key => $value) {
      // Don't make last breadcrumb a link
      if ($key == (count($arguments) - 1)) {
        $links[] = t(drupal_get_title());
      } else {
        if (!empty($path)) {
          $path .= '/'. $value;
        } else {
          $path .= $value;
        }
        $links[] = l(t(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 '<div class="breadcrumb">'. implode(' &raquo; ', $breadcrumb) .'</div>';
  }
}
?>

Внимание! Заместо [YOUR-THEME-NAME] - вставляйте название вашей темы. Единственный минус данного способа или просто я не знаю как это сделать - перевести их на русский язык. Т.е. если мы имеем адрес mysite.org/news/newstitle, в хлебных крошках мы увидим Главная >> News >> newstitle, если кто знает как это исправить - пишите в комментах.

UPDATED! Название линков обворачиваем в t и переводим через translate interface и все работает!

Comments

Anonymous's picture

А если у меня УРЛ на транслите?

В Вашем способе урл на английском и потом переводится функцией t на русский, а если у меня УРЛ на транслите как мне перевести его на русский?

heihachi's picture

А в чем сосбственно у вас

А в чем сосбственно у вас трудность? У вас ведь просто на транслите урл написаны типа: moya-stranichka?

Вы просто через admin/build/translate/search также делаете перевод вашего транслита.

Anonymous's picture

Здравствуйте.

Этот код то что я уже ищу уже почти месяц! :)
Только он немного неверно работает. Можете дать аську или скайп, есть пару вопросов? :)

Anonymous's picture

Drupal 7

Я правильно понял, что это для 6 друпала?
А можете сделать для седьмого? )

heihachi's picture

Верно, это для Drupal 6 :)

Верно, это для Drupal 6 :) Постараюсь и для 7ки сделать.