mcpField
D
drupal-menus

drupal-menus

github.com/edutrul開発7349 回インストール21 週間前に更新
リポジトリ

drupal-menus について

drupal-menusは、Drupalのメニューリンクを定義・管理する開発スキルです。YAMLでの宣言、メニューツリー、リンクの変更、動的リンクプラグインを扱います。

主な機能

  1. 01YAMLでのメニューリンク定義
  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();
  }
}

コメント