Drupal 8 为面包屑导航栏添加当前文章标题

主题:
作者:anxin
日期:2017-05-18
分享:

Drupal 8 中默认的默认的面包屑(Breadcrumb)导航中只包括了首页的链接,不包含其他的链接。面包屑导航中包括的首页链接是在函数 template_preprocess_breadcrumb() 函数中添加的,要在面包屑导航中添加当前文章的标题,需要实现 THEMENAME_preprocess_breadcrumb() 函数。

1、Drupal 8 面包屑导航中添加标题的效果

Drupal 8 面包屑导航添加标题

2、Drupal 8 面包屑导航添加标题代码

实现 THEMENAME_preprocess_breadcrumb() 函数,在函数中添加如下代码:

$breadcrumb = &$variables['breadcrumb'];
$request = \Drupal::request();
$route_match = \Drupal::routeMatch();
$page_title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());

if (!empty($page_title)) {
  $breadcrumb[] = [
    'text' => $page_title,
    'attributes' => new Attribute(['class' => ['active']]),
  ];
  // Add cache context based on url.
  $variables->addCacheContexts(['url']);
}

3、Drupal 8 面包屑导航添加标题代码解释

1、获取标题:

$page_title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());

注:使用了 Drupal 8 提供的服务 title_resolver,此服务的定义类为 Drupal\Core\Controller\TitleResolver,它只包含一个函数 getTitle(),用来获取所给 route 的标题。

2、添加可渲染的面包屑项

$breadcrumb[] = [
  'text' => $page_title,
  'attributes' => new Attribute(['class' => ['active']]),
];

注:面包屑项,可以包含三个属性: texturlattributes。其中 texturl 为字符串,attributesDrupal\Core\Template\Attribute 类的对象。

本文链接:https://www.yuzhi100.com/article/drupal-8-mianbaoxie-tianjia-biaoti

本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!

作者:anxin