drupal-menus について
drupal-menusは、Drupalのメニューリンクを定義・管理する開発スキルです。YAMLでの宣言、メニューツリー、リンクの変更、動的リンクプラグインを扱います。
主な機能
- 01YAMLでのメニューリンク定義
- 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
プロジェクトの 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 対応