Views Bulk Edit
Views一括操作を通じて、任意のタイプのエンティティの選択リストのフィールド値を変更できます。
views_bulk_edit
インストール
composer require 'drupal/views_bulk_edit:^3.0'
composer require 'drupal/views_bulk_edit:8.x-2.9'
composer require 'drupal/views_bulk_edit:8.x-2.7'
概要
Views Bulk Editは、Views上から直接エンティティのフィールド値を一括編集するための強力な機能を提供します。サイト管理者やコンテンツ管理者は、複数のエンティティ(ノード、ユーザー、タクソノミーターム、メディアなど)を選択し、1回の操作でフィールド値を変更できます。
このモジュールはDrupalコアの組み込み一括アクションとシームレスに連携し、Views Bulk Operations(VBO)モジュールとも統合されます。VBOと連携することで、バッチ処理、すべてのView結果の選択機能、ページをまたいだ選択の永続化などの追加メリットが得られます。
ユーザーは複数の変更方法から選択できます:既存の値を置換、テキストフィールドに追記、または複数値フィールドに新しい値を追加。モジュールは一括編集時にカスタムログメッセージ付きの新しいリビジョン作成もサポートしています。サイト構築者はカスタムの「bulk_edit」フォームモードを作成して、一括編集で利用可能なフィールドを正確に制御できます。
Features
- フィールドを持つあらゆるエンティティタイプ(ノード、ユーザー、タクソノミーターム、メディアなど)のフィールド値を一括編集
- Drupalコアのアクションと連携し、オプションでViews Bulk Operations(VBO)モジュールとも統合
- 複数の変更方法:置換(既存の値を上書き)、追記(テキストフィールドに追加)、新規(複数値フィールドに値を追加)
- リビジョン対応エンティティのサポート - 新しいリビジョンの作成とカスタムリビジョンログメッセージが可能
- カスタムフォームモードのサポート - 「bulk_edit」フォームモードを作成して一括編集で利用可能なフィールドを制御
- エンティティ翻訳のサポート - 適切な言語バージョンを編集することで多言語コンテンツを正しく処理
- VBOと併用時は大規模な結果セットのバッチ処理に対応
- 設定可能なバンドル検出 - Viewの結果からエンティティバンドルを取得するか、パフォーマンス向上のためバンドルフィルターを使用
- 一般的なエンティティタイプ向けの事前構築されたアクション設定:ノード、ユーザー、タクソノミーターム、メディア
Use Cases
コンテンツステータスの一括更新
コンテンツViewで複数の記事を選択し、1回の操作で公開ステータスを変更します。例えば、古くなったニュース記事を1つずつ編集する代わりに、一度にすべて非公開にできます。
タクソノミー参照のバッチ更新
複数のコンテンツアイテムのカテゴリやタグフィールドを同時に更新します。サイトのタクソノミーを再編成したり、カテゴリ間でコンテンツを移行する際に便利です。
メモ付きの大量コンテンツリビジョン
説明的なログメッセージ付きの新しいリビジョンを作成しながら、コンテンツを一括変更します。複数のコンテンツにわたる編集上の変更を追跡するのに役立ちます。
ユーザーアカウントの一括管理
部署情報、ロール関連のカスタムフィールド、プロフィールデータなど、複数のユーザーアカウントのフィールド値を一度に変更します。
説明文へのプロモーションテキストの追記
「追記」変更方法を使用して、元のコンテンツを上書きせずに、複数のコンテンツアイテムの既存のテキストフィールドにプロモーションテキスト、免責事項、お知らせを追加します。
複数値参照フィールドへの値の追加
「新規」変更方法を使用して、既存の参照を保持しながら新しい参照を追加し、既存の複数値フィールドに新しいターム参照やエンティティ参照を追加します。
メディアアセットのメタデータ更新
メディアエンティティの代替テキスト、キャプション、カスタムフィールド値を一括更新して、サイト全体のアクセシビリティを向上させたり、ブランディングを更新したりします。
大規模サイト向けのパフォーマンス最適化された一括編集
VBO統合を使用する場合、パフォーマンスを最適化するために「Get entity bundles from results」オプションを設定します。大規模な結果セットの場合は、メモリの問題を防ぐためにこのオプションを無効にし、Viewでバンドルフィルターを使用してください。
Tips
- エンティティバンドルに「bulk_edit」フォームモードを作成して、一括編集フォームに表示されるフィールドを正確に制御できます。フォームモードは/admin/structure/display-modes/formでアクセスできます。
- 大規模な結果セット(数千のエンティティ)を扱う場合は、Viewでバンドルフィルターを使用し、VBOの事前設定で「Get entity bundles from results」を無効にしてパフォーマンスを向上させてください。
- 「追記」オプションはテキストフィールド(string、string_long、text、text_long)でのみ機能します。既存のテキストを失わずにコンテンツを追加するために使用します。
- タグや参照などの複数値フィールドでは、「新しい値を追加」を使用して既存の値を削除せずにアイテムを追加できます。
- ユーザーは一括編集を実行するために「use views bulk edit」権限と適切なエンティティ固有の権限(「edit any article content」など)の両方が必要です。
- リビジョン作成はエンティティバンドルのデフォルト設定に従います。チェックボックスをオンにしてオーバーライドし、新しいリビジョンを強制的に作成できます。これは監査証跡に便利です。
- フィールドが選択されている場合、空のフィールド値も保存されます。これを使用して、複数のエンティティのフィールド値を意図的にクリアできます。
- 一括編集フォームは、選択した各エンティティタイプとバンドルごとに別々のセクションを表示し、バンドルごとに異なるフィールド変更が可能です。
Technical Details
Admin Pages 1
/admin/content/bulk-edit
選択したエンティティのフィールド値を変更するための一括編集確認・設定フォームです。このページはViewでエンティティを選択し「Modify field values」アクションを選択した後に表示されます。フォームは選択された各エンティティタイプとバンドルの編集フォームを動的に表示し、ユーザーはどのフィールドを変更するか、どのように変更するかを選択できます。
権限 1
Hooks 1
hook_help
hook_help()を実装して、管理ヘルプページにモジュールのヘルプテキストを提供します。モジュールのヘルプページを表示する際にREADME.txtの内容を表示します。
Security Notes 5
- ユーザーはエンティティ固有の編集権限に加えて、明示的な「use views bulk edit」権限が必要です。これにより、追加のアクセス制御レイヤーが提供されます。
- モジュールは処理前にエンティティアクセスを検証します。ユーザーは個別に更新する権限を持つエンティティのみを変更できます。
- フォームのCSRF保護はDrupalのフォームAPIを通じて実装されています。
- エンティティは変更前に新しくロードされ、正しいリビジョンを編集することを保証し、古いデータの問題を防ぎます。
- 翻訳処理により、元の選択に基づいて各エンティティの正しい言語バージョンが変更されることが保証されます。