hoppinger/breadcrumb_builder

Drupal 模块,用于构建面包屑导航

v1.3 2021-03-19 12:05 UTC

This package is auto-updated.

Last update: 2024-09-17 17:42:52 UTC


README

导航可以大大增强用户在网站中找到路径的方式。在可用性方面,面包屑减少了网站访客需要执行的操作数量,以便到达更高级别的页面,并提高了网站部分和页面的可发现性。它们也是一种有效的视觉辅助工具,指示用户在网站层级结构中的位置,因此对于落地页来说,它们是上下文信息的良好来源。

安装

composer require hoppinger/breadcrumb_builder

使用方法

路径面包屑生成器会自动根据页面URL和菜单中包含的项目识别您想要的正确面包屑。如果需要特殊的面包屑路径,您可以扩展路径面包屑生成器的功能,并创建自己的面包屑路径。

创建一个自定义服务,并在 modulename.services.yml 文件中定义该服务。用您的文件名替换 ExampleBreadcrumbBuilder。为自定义面包屑生成器添加优先级。

  class: Drupal\module_name\ExampleBreadcrumbBuilder
    arguments: ['@plugin.manager.menu.link']
    tags:
      - { name: custom_breadcrumb_builder, priority: x }

在 <module_name>/src 文件夹内创建一个 ExampleBreadcrumbBuilder.php 文件,并扩展面包屑管理器。

namespace Drupal\<module_name>;

use Drupal\breadcrumb_builder\BreadcrumbBuilderInterface;
use Drupal\Core\Menu\MenuLinkInterface;
use Drupal\Core\Menu\MenuLinkManagerInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\breadcrumb_builder\BreadcrumbResult;


class ExampleBreadcrumbBuilder implements BreadcrumbBuilderInterface {
  //Variables

  public function __construct() {
    //Intitialize
  }
  
   /**
   * {@inheritdoc}
   */
  public function applies(RouteMatchInterface $route_match) {
    return TRUE;
  } 

  public function build(RouteMatchInterface $route_match) {
    //Custom logic
  }
}

在某些情况下,我们需要比指定的 'main' 菜单更多的菜单类型,以帮助生成面包屑。

在模块目录 /src 中创建一个 .php 文件,内容如下。用项目特定的菜单类型替换 <target_identifier>,该类型需要嵌入到API响应中(例如:footer

<target_identifiers> 可以是菜单类型。

文件名必须与模块名相似,例如 ModuleNameServiceProvider.php,并且必须放在 src 文件夹中。

use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderBase;
use Symfony\Component\DependencyInjection\Reference;

class AlterServiceProvider extends ServiceProviderBase {
  public function alter(ContainerBuilder $container) {
    if ($container->hasParameter('breadcrumb_builder.target_identifiers')) {
      $target_identifiers = $container->getParameter('breadcrumb_builder.target_identifiers');
      
      $target_identifiers[] = <target_identifier>; #e.g., footer
  
      $container->setParameter('breadcrumb_builder.target_identifiers', $target_identifiers);
  }
}

默认情况下,主菜单已作为目标标识符添加。