自定义面包屑基于Drupal 7中的URL(修改为HTML列表)

时间:2014-02-06 10:05:57

标签: php drupal drupal-7 breadcrumbs

目前,我正在使用我的template.php

function systema_breadcrumb($variables) {
  $breadcrumb = $variables['breadcrumb'];
  $crumbs = null;
  if (!empty($breadcrumb)) {
    // Provide a navigational heading to give context for breadcrumb links to
    // screen-reader users. Make the heading invisible with .element-invisible.
    $crumbs .= '<ul class="breadcrumb">';
    $array_size = count($breadcrumb);
    $i = 0;
    while ( $i < $array_size) {
      $crumbs .= '<li>' . $breadcrumb[$i] . '</li>';
      $i++;
    }
    $crumbs .= '<li><span>'. drupal_get_title() .'</span></li></ul>';
    return $crumbs;
  }
}

此输出显示为Home > [Content Type] > [Page Title]

虽然这很好用,但这里缺少一些东西。我将此页面设置为的当前网址结构为mydomain.com/[content-type]/[field-value]/[title-slug][field-value]是我根据类型创建内容时添加的字段。它使用基于我创建的分类术语的选择列表。这就是我想要的:

  1. 根据网址设置面包屑。
  2. 将它们显示为无序列表。
  3. 将最后一项设置为<span>而不是<a>标记。
  4. 分层方法的工作方式与this类似。我唯一的问题是它显示为div。我想将它们设置为无序列表。任何人都可以帮我修改这个或者有没有人有更好的方法?谢谢!

1 个答案:

答案 0 :(得分:0)

按照您链接的示例而不是行:

return '<div class="breadcrumb">'. implode(' &raquo; ', $breadcrumb) .'</div>';

把:

// wrap last array element in a span
end($breadcrumb);
$breadcrumb[key($breadcrumb)] = '<span>'.$breadcrumb[$key].'</span>';

// now loop each item and build a ul
$out = '<ul class="breadcrumb">';
foreach($breadcrumb as $item) {
    $out .= '<li>'.$item.'</li>';
}
return $out .= '</ul>';