Navigation Extra Tools
Drupal コアの Navigation ツールバーに Tools サブメニューを追加し、キャッシュクリア、cron 実行、データベース更新機能に素早くアクセスできるようにします。
navigation_extra_tools
インストール
composer require 'drupal/navigation_extra_tools:^1.3'
概要
Navigation Extra Tools は、Drupal コアの新しい Navigation ツールバーに「Tools」サブメニューを提供し、一般的なサイト管理タスクへの便利なショートカットを提供します。このモジュールは、Admin Toolbar Extra Tools サブモジュールが以前提供していた機能を再現していますが、Drupal 10.3 で導入された Navigation モジュール専用に設計されています。
このモジュールは、各種キャッシュのクリア(全キャッシュ、CSS/JavaScript、プラグイン、静的キャッシュ、メニュー/ルーティング、レンダー、Twig、Views、テーマレジストリ)、cron の手動実行、データベース更新へのアクセスなど、クイックアクセスメニュー項目を追加します。これらのアクションは、別の管理ページに移動することなく、ナビゲーションサイドバーから直接アクセスできます。
Devel モジュールがインストールされている場合、Navigation Extra Tools は自動的に Tools の下に Development サブメニューを追加し、Devel のデバッグおよび開発ユーティリティへのアクセスを提供します。また、Project Browser との連携により、ストレージのクイッククリアオプションも提供します。
Features
- Navigation ツールバーのサイドバーにレンチアイコン付きの「Tools」メニューを追加
- パフォーマンスページのキャッシュクリアと同等の「Flush all caches」機能を提供
- CSS/JavaScript、プラグイン、静的キャッシュ、ルーティング/リンク、Twig テンプレート、レンダーキャッシュ、Views キャッシュ、テーマレジストリの個別キャッシュクリアオプションを提供
- ナビゲーションバーから手動で cron を実行するための「Run cron」メニュー項目を追加
- データベース更新機能にアクセスするための「Run updates」リンクを含む
- Devel モジュールがインストールされている場合、設定可能な Devel ツールを含む Development サブメニューを自動的に統合
- Devel と Webprofiler モジュールの両方が有効な場合、Webprofiler 設定との統合をサポート
- Devel PHP モジュールが利用可能な場合、Execute PHP Code オプションを提供するために統合
- Project Browser モジュールがインストールされている場合、ストレージクリアオプション付きの Project Browser サブメニューを追加
- 権限ベースの表示により、各ユーザーに関連するメニュー項目のみを表示
- 更新時に 'administer site configuration' 権限を持つロールに新しい権限を自動的に付与
Use Cases
開発中の素早いキャッシュクリア
テーマやモジュールの開発中、開発者は変更を確認するために頻繁にキャッシュをクリアする必要があります。/admin/config/development/performance に移動する代わりに、開発者はどのページからでもナビゲーションサイドバーから直接 Tools > Flush all caches をクリックするだけで済みます。
特定の問題に対する対象を絞ったキャッシュクリア
特定のサイトコンポーネントの問題をトラブルシューティングする際、管理者は個別のキャッシュクリアオプションを使用できます。例えば、Twig テンプレートが更新されない場合は、Tools > Flush individual cache > Flush Twig cache を使用します。メニューリンクが正しく表示されない場合は、Flush routing and links cache を使用します。
テスト用の手動 cron 実行
cron ベースの機能(スケジュールされたコンテンツ公開や検索インデックス作成など)を開発またはテストする際、管理者はスケジュールされた cron 間隔を待たずに、Tools > Run cron から手動で cron をトリガーできます。
Devel モジュールを使用した開発ワークフロー
Devel モジュールを使用する開発者は、ナビゲーションバーから直接デバッグツールにアクセスできます。Development サブメニューは、設定の表示、状態変数の管理、エンティティ情報の検査など、よく使用される Devel 機能への素早いアクセスを提供します。
Project Browser キャッシュのリフレッシュ
Project Browser を使用してモジュールを発見およびインストールする際、モジュールリストが古く見える場合、管理者は Tools > Project Browser > Clear storage を使用してキャッシュされたプロジェクトデータを強制的にリフレッシュできます。
即座にフィードバックを得られるテーマ開発
テーマ開発者は、「Rebuild theme registry」オプションを使用して、すべてのキャッシュをクリアすることなく、新しいテンプレートファイルやテーマ関数の変更を即座に登録でき、テーマ開発中のより高速な反復を提供します。
Tips
- モジュールは、インストールまたは更新時に 'administer site configuration' 権限を持つすべてのロールにキャッシュクリアおよび cron 権限を自動的に付与します
- すべてのキャッシュクリアおよび cron アクションは、完了後に参照元ページにリダイレクトするため、作業中のページに留まるのに便利です
- Tools メニューに使用されるレンチアイコンは Phosphor Icons から来ており、Drupal の Navigation ツールバーデザインとの視覚的な一貫性を維持しています
- Navigation Extra Tools の後に Devel がインストールされた場合、モジュールは Admin Toolbar Extra Tools との一貫性のために標準的な Devel メニュー項目のセットを自動的に有効化します
- 一部のキャッシュクリア方法とは異なり、個別のキャッシュオプションは特定のキャッシュのみをクリアする精度を提供し、開発中により高速で適切な場合があります
Technical Details
Admin Pages 15
/admin/tools
すべての Tools メニュー機能の親コンテナページ。このページは、ユーザーの権限に基づいて利用可能なツールカテゴリを表示します。実際の機能は、このページ自体ではなく、子メニュー項目を通じてアクセスします。
/admin/flush
すべてのサイトキャッシュを一度にクリアします。これはパフォーマンスページ(/admin/config/development/performance)で「Clear all caches」をクリックするのと同等です。実行後、確認メッセージとともに前のページにリダイレクトされます。
/admin/tools/individual
個別キャッシュクリアオプションのコンテナページ。特定のサブシステムの詳細なキャッシュクリア機能へのアクセスを提供します。
/admin/flush/css-js
アセットクエリ文字列をリセットして CSS と JavaScript の集約キャッシュをクリアします。これにより、ブラウザは集約された CSS および JavaScript ファイルの新しいバージョンをダウンロードするようになります。
/admin/flush/plugin
キャッシュされたすべてのプラグイン定義をクリアします。カスタムプラグインの開発時や、新しいプラグインを提供するモジュールのインストール後に便利です。
/admin/flush/static-caches
現在のリクエスト中にメモリに保存されているすべての静的キャッシュをリセットします。主にデバッグ中の開発者にとって便利です。
/admin/flush/menu
メニューリンク、コンテキストリンク、ローカルタスク、ローカルアクションを含む、キャッシュされたすべてのメニューデータをクリアします。また、メニューリンクプラグイン定義を再構築します。
/admin/flush/render-cache
ページおよびページ要素の事前レンダリングされたバージョンを保存するレンダーキャッシュをクリアします。
/admin/flush/views
Views 固有のキャッシュデータをすべて無効化します。Views が更新されたコンテンツを表示しない場合に便利です。
/admin/flush/twig
コンパイル済み Twig テンプレートキャッシュをクリアします。テーマ開発中に Twig テンプレートを変更した場合に必要です。
/admin/flush/theme_rebuild
利用可能なすべてのテーマフックに関する情報を含むテーマレジストリを再構築します。新しいテンプレートファイルやテーマ関数を追加するときに便利です。
/run-cron
手動で cron を実行します。コンテンツのインデックス作成、ログのクリーンアップ、その他のスケジュールされたメンテナンス操作を含む、登録されたすべての cron タスクを実行します。
/admin/tools/devel
Devel モジュール統合のコンテナページ。Devel モジュールがインストールされている場合のみ表示されます。Devel Toolbar Settings で設定された Devel デバッグおよび開発ツールへのアクセスを提供します。
/admin/project_browser
Project Browser モジュール統合のコンテナページ。Project Browser モジュールがインストールされている場合のみ表示されます。
/admin/project_browser/clear
Project Browser のキャッシュされたプロジェクトデータストレージをクリアします。Project Browser が古いモジュール/テーマ情報を表示している場合に便利です。
権限 2
Hooks 3
hook_library_info_alter
ツールバーモジュールが有効な場合にツールバー依存関係を追加するためにライブラリ定義を変更し、適切なライブラリ読み込みを保証します。
hook_page_attachments
'access navigation' 権限を持つユーザーのページに navigation_extra_tools/icon ライブラリを添付し、Tools メニューのレンチアイコン表示を有効にします。
hook_modules_installed
モジュールインストールイベントに応答します。Devel モジュールがインストールされると、ツールバー設定で事前定義された Devel メニュー項目のセットを自動的に有効化します。
Troubleshooting 5
ユーザーが次の権限のいずれかを持っていることを確認してください:'Access navigation extra tools: cache flushing'、'Access navigation extra tools: cron'、または Devel 機能へのアクセス権(Devel がインストールされている場合)。Tools メニューは、ユーザーが少なくとも 1 つの子メニュー項目にアクセスできる場合にのみ表示されます。
Development サブメニューは、Devel モジュールがインストールされ有効になっている場合にのみ表示されます。さらに、ユーザーは 'administer site configuration' または 'access devel information' 権限のいずれかを持っている必要があります。
Devel メニュー項目は、/admin/config/development/devel/toolbar の Devel モジュールのツールバー設定で設定されます。このページで目的の項目が有効になっていることを確認してください。
データベース更新(drush updb または /update.php)を実行して、'administer site configuration' を持つロールに新しい権限を付与する post_update フックを実行してください。または、/admin/people/permissions で権限を手動で付与してください。
CSRF トークン保護が正しく機能していることを確認してください。キャッシュクリアルートはセキュリティのために有効な CSRF トークンを必要とします。問題が続く場合は、セッション処理が正しく設定されていることを確認してください。
Security Notes 4
- キャッシュクリアおよび cron 権限は 'restrict access' としてマークされており、信頼できる管理者ロールにのみ付与する必要があります
- すべてのキャッシュクリアおよび cron ルートは、クロスサイトリクエストフォージェリ攻撃を防ぐために CSRF トークンで保護されています
- Tools メニューの表示は、子メニュー項目に対する現在のユーザーの権限に基づいて動的に計算され、ユーザーがアクセスできる機能のみが表示されることを保証します
- データベース更新アクセス(/update.php)には、モジュールの権限とは別の 'administer software updates' 権限が必要です