Module Filter
拡張ページ、アンインストールページ、アップデート状況レポート、権限ページを含むDrupal管理ページにフィルタリング機能を提供します。
module_filter
インストール
composer require 'drupal/module_filter:^5.0'
概要
Module Filterは、モジュール管理ページに強力なフィルタリング機能を提供するDrupal管理拡張モジュールです。このモジュールは、多くのモジュールがインストールされたサイトで特定のモジュールを見つけるという、サイト管理者が直面する一般的な課題に対処します。
このモジュールは、ページ全体でマッチを強調表示するのではなく要素をフィルタリングするため、ブラウザの検索機能よりも格段に効果的なテキストベースのフィルタリングを提供します。フィルターテキストフィールドに加えて、ステータスチェックボックス(有効、無効、利用不可)により、さらに検索を絞り込むことができます。
際立った機能の一つは、拡張ページのオプションのタブ付きインターフェースです。パッケージごとに折りたたみ可能なフィールドセットとしてモジュールを表示する代わりに、タブビューは各パッケージを垂直タブに変換し、ナビゲーションを大幅に改善します。「すべて」、「最近有効化」、「新規利用可能」などの特別なタブは、追加の整理ビューを提供します。
このモジュールは、モジュールの説明、依存関係などで検索できる高度なフィルター演算子もサポートしています。複数のフィルターを組み合わせることができ、フィルター状態はlocalStorageを使用してページ読み込み間で保持されます。
Features
- モジュール、アンインストール、アップデート状況、権限ページのテキストベースフィルタリング
- パッケージごとにモジュールを整理する拡張ページのオプションのタブ付きインターフェース
- 有効、無効、または利用不可のモジュールでフィルタリングするためのステータスチェックボックス
- フィルター演算子: description:(説明でフィルター)、requires:(依存関係でフィルター)、requiredBy:(被依存関係でフィルター)、perm:(権限テキストでフィルター)
- 視覚的ハイライト付きの最近有効化されたモジュールの追跡
- 新規利用可能モジュールの検出(過去1週間以内に追加されたモジュール)
- フィルター状態と設定のlocalStorage永続化
- フィルター候補のjQuery UI Autocomplete統合
- drupal.orgプロジェクトページへのリンク付きの不足モジュール検出
- ブラウザ履歴サポート付きのタブナビゲーション(ハッシュベースURL)
- 有効/マッチしたモジュールを表示するタブごとのモジュール数表示
- フィルタリング中に有効化/無効化されるモジュールを示す視覚的補助
Use Cases
大規模サイトで特定のモジュールを見つける
100以上のモジュールがあるサイトでは、特定のモジュールを見つけるのは面倒です。フィルターフィールドにモジュール名を入力すると、リストが即座に絞り込まれます。ステータスチェックボックスを使用して、有効/無効状態でフィルタリングできます。タブインターフェースは追加の整理のためにモジュールをパッケージごとにグループ化します。
モジュールの依存関係を特定する
「requires:」フィルター演算子を使用して、特定のモジュールに依存するすべてのモジュールを見つけます。たとえば、「requires:views」と入力すると、Viewsモジュールを必要とするすべてのモジュールが表示されます。同様に、「requiredBy:」は他のモジュールから必要とされているモジュールを表示します。
最近変更されたモジュールを確認する
モジュールを有効化または無効化した後、それらは1週間「最近有効化」タブに表示されます。これは開発やトラブルシューティング中の最近の変更を追跡するのに役立ちます。新しいモジュール(過去1週間以内にファイルシステムに追加されたもの)は「新規利用可能」タブに表示されます。
モジュールごとに権限をフィルタリングする
多くのモジュールがあるサイトでは、権限ページは非常に長くなります。権限フィルターを有効にすると、管理者はモジュール名または権限テキストを入力して権限をすばやく見つけることができます。権限固有の検索には「perm:」演算子を使用します。
セキュリティアップデートを確認する
アップデート状況レポートページで、ラジオフィルターを使用して、セキュリティアップデートが利用可能なモジュールまたは注意が必要なサポート終了モジュールのみをすばやく表示し、セキュリティ監査をより効率的にします。
モジュールファイルを見つける
設定で「モジュールパスを表示」を有効にすると、各モジュールのファイルシステムパスが表示されます。これにより、開発者はモジュールがコア、コントリビュート、またはカスタムディレクトリにあるかをすばやく特定できます。
Tips
- スペースを含むフレーズを検索するにはダブルクォートを使用: 'requires:"chaos tools"'
- 複数のフィルターをスペースで組み合わせ: 'description:ctools views'は説明に「ctools」があり、かつ名前に「views」があるモジュールを見つけます
- アクティブなタブをクリックして選択解除し、「すべてのモジュール」ビューに戻ります
- タブでフィルタリングすると、マッチしないタブにはマッチするモジュールの数が表示され、マッチがどこにあるかを見つけるのに役立ちます
- 「すべて」ビューでモジュールにホバーすると、そのモジュールが属するパッケージタブが表示されます(タブがハイライトされます)
- フィルター値はURLクエリ文字列に保持されるため、フィルタリングされたビューをブックマークしたりリンクを共有したりできます
Technical Details
Admin Pages 1
/admin/config/user-interface/module-filter
Module Filter設定の設定ページ。管理者がモジュールがさまざまな管理ページをどのように拡張するかをカスタマイズできます。
権限 1
Hooks 7
hook_form_system_modules_alter
テキストフィルター、ステータスチェックボックス、タブ付き/ベアインターフェースを含むフィルタリング機能を追加するために、拡張(システムモジュール)フォームを変更します。
hook_form_system_modules_confirm_form_alter
モジュールの有効化/無効化確認フォームが表示されるときにフィルター値を保持します。
hook_form_system_modules_uninstall_alter
モジュール名、説明、またはマシン名によるテキストフィルター付きで、モジュールアンインストールページにフィルタリングを追加します。
hook_form_user_admin_permissions_alter
設定で有効になっている場合、ユーザー権限管理ページにフィルタリング機能を追加します。
hook_theme_registry_alter
requires/required-byクラスやモジュールパス表示を含むModule Filterのカスタマイズを追加するために、system-modules-detailsテンプレートをオーバーライドします。
hook_preprocess_system_modules_details
「モジュールパスを表示」設定が有効な場合にモジュールパス変数を追加するために、モジュール詳細を前処理します。
hook_help
モジュールの目的を説明し、drupal.orgプロジェクトページへのリンクを含むModule Filterヘルプページのヘルプテキストを提供します。
Troubleshooting 5
jQuery UI Autocompleteモジュールがインストールされ有効になっていることを確認してください。update.phpを実行して、この依存関係を自動的にインストールするアップデート9403を実行してください。
/admin/config/user-interface/module-filterでModule Filter設定を確認し、「タブで拡張ページを強化する」がチェックされていることを確認してください。
Module Filter設定のフィルターセクションで「権限」が有効になっていることを確認してください。この設定を変更した後、Drupalキャッシュをクリアしてください。
Module Filterはフィルター状態を保持するためにlocalStorageを使用します。ブラウザ設定やプライバシー拡張機能によってlocalStorageがブロックされていないことを確認してください。
Module Filterは不足している依存関係に対してdrupal.orgリンクを自動的に追加します。リンクが表示されない場合は、JavaScriptが有効になっていて、コンソールエラーがないことを確認してください。
Security Notes 3
- 「administer module_filter」権限は、モジュール設定へのアクセスを提供するため、慎重に付与する必要があります
- Module Filterはセキュリティ関連の機能を変更しません。管理ページのUI拡張のみを提供します
- すべてのフィルタリングはJavaScriptを介してクライアントサイドで行われます。フィルタリング操作中に機密データは送信されません