Drupal → Программная установка хлебных крошек

15.08.2010

До того как хлебные крошки прошли через theme_breadcrumb(), изменить их можно с помощью ф-ии drupal_set_breadcrumb().

Пример установки хлебных крошек в функции генерации страницы со списком тегов (page callback):

function mymodule_page_callback() {
  $breadcrumbs[] = l(t('Home'), null);
  $breadcrumbs[] = l(t('Blog'), 'blog');
  $breadcrumbs[] = l(t('Tags'), 'blog/tags');
  drupal_set_breadcrumb($breadcrumbs);

  return '... tags ...';
}

Результат:

Кастомные хлебные крошки

А вот так можно установить свои крошки в template.php:

/**
 * Preprocess variables for page.tpl.php.
 */
function phptemplate_preprocess_page(&$vars) {
  if ($_GET['q'] == 'blog/tags') {
    $breadcrumbs[] = l(t('Home'), null);
    $breadcrumbs[] = l(t('Blog'), 'blog');
    $breadcrumbs[] = l(t('Tags'), 'blog/tags');
    $vars['breadcrumb'] = theme('breadcrumb', $breadcrumbs);
  }
}
Написанное актуально для
Drupal 6
Похожие записи

Комментарии

Для конкретного типу ноди:

  function THEME_NAME_preprocess_page(&$variables) {
    if ($variables['node']->type == 'produkt') {
          
      $breadcrumb   = array();
      // previous page link
      $breadcrumb[] = l(t('Home'), '<front>');
      $breadcrumb[] = l(t('Catalog'), 'node/16');

      // taxonomy page
      $vid = 1;
      if($term = current($variables['node']->taxonomy)) {
        if ($term->vid = $vid) {
          // add parent term
          if($parents = taxonomy_get_parents($term->tid)) {
            $breadcrumb[] = l($parents[$vid]->name, taxonomy_term_path($parents[$vid]).'/all');
          }
          
          // add current term
          $breadcrumb[] = l($term->name, 'taxonomy/term/' . $term->tid);
        }
      }
          
      // current page
      $breadcrumb[] = l(drupal_get_title(), $_GET['q']);

      $variables['breadcrumb'] = theme('breadcrumb', $breadcrumb);
      
    } elseif ($variables['node']->type == 'news') {
      $breadcrumb   = array();
      $breadcrumb[] = l(t('Home'), '<front>');
      $breadcrumb[] = l(t('News'), 'news');
      $breadcrumb[] = l(drupal_substr(drupal_get_title(), 0, 55), $_GET['q']); 

      $variables['breadcrumb'] = theme('breadcrumb', $breadcrumb);     
    }

Добавить комментарий