Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Как сделать хлебные крошки как на Вашем форуме?

Как сделать хлебные крошки как на Вашем форуме?
, by

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

 

Как сделать "хлебные крошки" как на вашкм форуме, меня интересуют настройки путей контейнеров.

 

Вкладываю рисунок, чтобы было понятнее.

 

Заранее спасибо.

 

1 answer
votes: 762
Answer

В токенах написано должно быть что есть %node:taxonomy_forum, если это нода то у нее путь node/nid, видимо вам нужно через таб "аргументы" задать аргумент nid или поставить тип содержимого в аргументах.

 

Я не использую дополнительные модули для хлебных крошек. Обычно беру функции темизации из темы Zen и уже там добавляю обработку.
Нужно обрабатывать или аргументы через функции arg() если обрабатывать друпаловски пути вроде node/nid, taxonomy/term/tid. Если обрабатывать синонимы то можно использовать переменную  $_SERVER,  вот пример кода:

<?php
function zen_breadcrumb($variables) {
  $breadcrumb = $variables['breadcrumb'];
  // Determine if we are to display the breadcrumb.
  $show_breadcrumb = theme_get_setting('zen_breadcrumb');
  if ($show_breadcrumb == 'yes' || $show_breadcrumb == 'admin' && arg(0) == 'admin') {

    // Optionally get rid of the homepage link.
    $show_breadcrumb_home = theme_get_setting('zen_breadcrumb_home');
    if (!$show_breadcrumb_home) {
      array_shift($breadcrumb);
    }

    // Return the breadcrumb with separators.
    if (!empty($breadcrumb)) {
      $breadcrumb_separator = theme_get_setting('zen_breadcrumb_separator');
      $trailing_separator = $title = '';
      if (theme_get_setting('zen_breadcrumb_title')) {
        $item = menu_get_item();
        if (!empty($item['tab_parent'])) {
          // If we are on a non-default tab, use the tab's title.
          $title = check_plain($item['title']);
        }
        else {
          $title = drupal_get_title();
        }
        if ($title) {
          $trailing_separator = $breadcrumb_separator;
        }
      }
      elseif (theme_get_setting('zen_breadcrumb_trailing')) {
        $trailing_separator = $breadcrumb_separator;
      }

      // Provide a navigational heading to give context for breadcrumb links to
      // screen-reader users.
      if (empty($variables['title'])) {
        $variables['title'] = t('You are here');
      }


      if(arg(0) == 'node' && is_numeric(arg(1))){
        $node = node_load(arg(1));
        if(!empty($node->type)){
          switch ($node->type){
            case 'vacancy':
              dsm($breadcrumb);
              $breadcrumb[] = '<a href="/vakansii">Вакансии</a>';
            break;
            case 'news':
              $breadcrumb[] = '<a href="/materialy-dlya-smi">Материалы для СМИ</a>';
              $breadcrumb[] = '<a href="/news">Новости</a>';
            break;
            case 'library':
              $breadcrumb[] = '<a href="/biblioteka-hartmann">Библиотека HARTMANN</a>';
              $breadcrumb[] = l($node->field_library['und'][0]['taxonomy_term']->name, 'taxonomy/term/'.$node->field_library['und'][0]['tid']);
            break;
          }
        }
      }


      if(arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
        $term = taxonomy_term_load(arg(2));
        if(!empty($term)){
          switch ($term->vid){
            case 2:
              $breadcrumb[] = '<a href="/biblioteka-hartmann">Библиотека HARTMANN</a>';
            break;
          }
        }
      }

      switch ($_SERVER['REQUEST_URI']){
        case '/partnery/view-partners-fonds':
          $breadcrumb[] = '<a href="/partnery">Партнеры</a>';
        break;
        case '/partnery/view-partners-society':
          $breadcrumb[] = '<a href="/partnery">Партнеры</a>';
        break;
        case '/partnery/view-partners-obrazovatelnye':
          $breadcrumb[] = '<a href="/partnery">Партнеры</a>';
        break;
        case '/partnery/view-partners-smi':
          $breadcrumb[] = '<a href="/partnery">Партнеры</a>';
        break;
        case '/partnery/view-partners-institution':
          $breadcrumb[] = '<a href="/partnery">Партнеры</a>';
        break;
        case '/partnery/view-partners-network':
          $breadcrumb[] = '<a href="/partnery">Партнеры</a>';
        break;
        case '/partnery/view-partners-apteka':
          $breadcrumb[] = '<a href="/partnery">Партнеры</a>';
        break;
        case '/partnery/view-partners-dilery':
          $breadcrumb[] = '<a href="/partnery">Партнеры</a>';
        break;
      }



      // Unless overridden by a preprocess function, make the heading invisible.
      if (!isset($variables['title_attributes_array']['class'])) {
        $variables['title_attributes_array']['class'][] = 'element-invisible';
      }
      $heading = '<h2' . drupal_attributes($variables['title_attributes_array']) . '>' . $variables['title'] . '</h2>';

      return '<div class="breadcrumb">' . $heading . implode($breadcrumb_separator, $breadcrumb) . $trailing_separator . $title . '</div>';
    }
  }
  // Otherwise, return an empty string.
  return '';
}
?>