Хлебные крошки в drupal

Аватар пользователя rayzor rayzor 25 июня 2017 в 12:36

Делаю новый шаблон. В page.tpl вывел переменную $breadcrumb. В итоге на нодах в хлебных крошках есть только главная. Должно быть как минимум главная и текущая страница. Из коробки хлебные крошки не работают? Надо обязательно в теме использовать hook_breadcrumb?

Если кому то надо сделать поле под хлебные крошки, т.е в каждой ноде текущий label будет браться не из названия, а из доп. поле, то как бы вы решали эту задачу?

Модули не предлагать, хочу научиться решать вопрос либо стандартными средствами, либо через api.

Комментарии

Аватар пользователя mozh mozh 26 июня 2017 в 14:18

а хук это api?
убедился на нескольких проектах, что проще в хуке собрать крошки какие нужно и все
используйте arg() фукнцию

<?php/* Put Breadcrumbs in a ul li structure */
function HOOK_breadcrumb($variables) {
  $breadcrumb = $variables['breadcrumb'];
//add current page
    $breadcrumb[] = '<li>'.t(drupal_get_title()).'</li>';
    $output .= '<ol itemscope itemtype="http://schema.org/BreadcrumbList">
                  ' . implode('', $breadcrumb) . '
                </ol>';
    return $output;
}?>

//add term path in breadcrumbs
$entity = filter_xss(arg(0));

if(!empty($entity) && $entity == 'node'){
$nid = filter_xss(arg(1));
if(!empty($nid) && is_numeric($nid)){
$node = node_load($nid);
if($node->type == 'news'){
if(isset($node->field_category['und'][0]['tid'])){
$tid = $node->field_category['und'][0]['tid'];
$term = taxonomy_term_load($tid);
$path_term = drupal_get_path_alias('taxonomy/term/'.$tid);
$breadcrumb[] = l(t('News'), 'news');
$breadcrumb[] = l(t($term->name), $path_term);
}
}
//dpm($node);
}
}elseif(!empty($entity) && $entity == 'taxonomy' && !in_array(l(t('News'), 'news'), $breadcrumb)){
$breadcrumb[] = l(t('Tags'), 'tags');
}

в общем крутить можно как угодно