mcpField
D
drupal-menus

drupal-menus

github.com/edutrul开发7349 次安装21 周前更新
代码仓库

关于 drupal-menus

drupal-menus 是用于定义和管理 Drupal 菜单链接的开发技能,涵盖 YAML 声明、菜单树、链接修改及动态菜单链接插件。

主要功能

  1. 01在 YAML 中定义菜单链接
  2. 02创建任务标签页和操作链接
  3. 03加载并筛选菜单树
  4. 04修改发现的菜单链接
  5. 05实现动态菜单链接插件

适用场景

  1. 01添加管理菜单项
  2. 02为路由创建设置标签页
  3. 03构建带深度限制的菜单树
  4. 04动态设置菜单链接标题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/edutrul/drupal-ai --skill drupal-menus

安装后在 Claude Code 中输入/drupal-menus确认已加载。

附带文件README.md

README 原文English

来自项目 README

README 暂无中文译文,以下为英文原文;中文介绍见上方。

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