关于 drupal-menus
drupal-menus 是用于定义和管理 Drupal 菜单链接的开发技能,涵盖 YAML 声明、菜单树、链接修改及动态菜单链接插件。
主要功能
- 01在 YAML 中定义菜单链接
- 02创建任务标签页和操作链接
- 03加载并筛选菜单树
- 04修改发现的菜单链接
- 05实现动态菜单链接插件
适用场景
- 01添加管理菜单项
- 02为路由创建设置标签页
- 03构建带深度限制的菜单树
- 04动态设置菜单链接标题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ edutrul/ drupal-ai --skill drupal-menus安装后在 Claude Code 中输入/drupal-menus确认已加载。
附带文件README.md
README 原文English
来自项目 READMEREADME 暂无中文译文,以下为英文原文;中文介绍见上方。
Drupal Menus
Menu Links (*.links.menu.yml)
# my_module.links.menu.yml
my_module.admin:
title: 'My Module'
description: 'Configure My Module.'
route_name: my_module.admin
parent: system.admin_config
weight: 10
my_module.admin.settings:
title: 'Settings'
route_name: my_module.admin.settings
parent: my_module.admin
weight: 0
Task Links / Tabs (*.links.task.yml)
# my_module.links.task.yml
my_module.settings_tab:
title: 'Settings'
route_name: my_module.admin.settings
base_route: my_module.admin
my_module.advanced_tab:
title: 'Advanced'
route_name: my_module.admin.advanced
base_route: my_module.admin
weight: 10
Action Links (*.links.action.yml)
# my_module.links.action.yml
my_module.add_item:
title: 'Add Item'
route_name: my_module.add
appears_on:
- my_module.list
Programmatic Menu Tree
use Drupal\Core\Menu\MenuTreeParameters;
$menu_tree = \Drupal::menuTree();
$parameters = new MenuTreeParameters();
$parameters->setMaxDepth(2)->onlyEnabledLinks();
$tree = $menu_tree->load('main', $parameters);
$manipulators = [
['callable' => 'menu.default_tree_manipulators:checkAccess'],
['callable' => 'menu.default_tree_manipulators:generateIndexAndSort'],
];
$tree = $menu_tree->transform($tree, $manipulators);
$build = $menu_tree->build($tree);
Altering Menu Links
#[Hook('menu_links_discovered_alter')]
public function menuLinksDiscoveredAlter(array &$links): void {
if (isset($links['my_module.some_link'])) {
$links['my_module.some_link']['title'] = new TranslatableMarkup('New Title');
}
}
Dynamic Menu Links (MenuLinkDefault plugin)
// src/Plugin/Menu/MyDynamicMenuLink.php
use Drupal\Core\Menu\MenuLinkDefault;
final class MyDynamicMenuLink extends MenuLinkDefault {
public function getTitle(): string {
return 'Dynamic Title from ' . $this->getRouteName();
}
}
评论
支持 Markdown