1<?php 2 3namespace Drupal\forum\Breadcrumb; 4 5use Drupal\Core\Link; 6use Drupal\Core\Routing\RouteMatchInterface; 7 8/** 9 * Breadcrumb builder for forum nodes. 10 */ 11class ForumNodeBreadcrumbBuilder extends ForumBreadcrumbBuilderBase { 12 13 /** 14 * {@inheritdoc} 15 */ 16 public function applies(RouteMatchInterface $route_match) { 17 return $route_match->getRouteName() == 'entity.node.canonical' 18 && $route_match->getParameter('node') 19 && $this->forumManager->checkNodeType($route_match->getParameter('node')); 20 } 21 22 /** 23 * {@inheritdoc} 24 */ 25 public function build(RouteMatchInterface $route_match) { 26 $breadcrumb = parent::build($route_match); 27 $breadcrumb->addCacheContexts(['route']); 28 29 $parents = $this->termStorage->loadAllParents($route_match->getParameter('node')->forum_tid); 30 if ($parents) { 31 $parents = array_reverse($parents); 32 foreach ($parents as $parent) { 33 $breadcrumb->addCacheableDependency($parent); 34 $breadcrumb->addLink(Link::createFromRoute($parent->label(), 'forum.page', 35 [ 36 'taxonomy_term' => $parent->id(), 37 ] 38 )); 39 } 40 } 41 42 return $breadcrumb; 43 } 44 45} 46