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); } }
默认情况下,主菜单已作为目标标识符添加。