Layout Builder Restrictions

サイトビルダーがLayout Builder UIで配置可能なブロックとレイアウトを制御できるようにします。エンティティタイプとビューモードごとに制限を設定できます。

layout_builder_restrictions
32,484 sites
121
drupal.org

インストール

Drupal 11, 10 v3.0.4
composer require 'drupal/layout_builder_restrictions:^3.0'

概要

Layout Builder RestrictionsはDrupalコアのLayout Builderモジュールを補完し、コンテンツ編集者が配置できるブロックとレイアウトをきめ細かく制御できるようにします。コアのLayout Builderモジュールではデフォルトですべてのブロックとレイアウトが使用可能ですが、このモジュールを使用することでサイトビルダーが利用可能なオプションを厳選できます。

各エンティティタイプで配置可能なブロックを個別に指定でき、各エンティティのビューモードごとに異なる制限設定を持つことができます。このモジュールは柔軟なプラグインアーキテクチャを提供し、異なる制限方式を適用できます。デフォルトプラグインはエンティティビューモードごとにブロックとレイアウトを制限します。

制限は許可リスト(指定されたブロックのみ許可)または拒否リスト(指定されたブロック以外すべて許可)として設定でき、ブロックカテゴリ全体を制限することも可能です。また、インラインブロック、カスタムブロックタイプ、コンテンツブロックを個別に制限でき、コンテンツガバナンスに最大限の柔軟性を提供します。

Features

  • エンティティタイプとビューモードごとにLayout Builderで配置可能なブロックを制限
  • セクション追加時に使用可能なレイアウトを制限
  • 許可リスト(特定のブロックを許可)または拒否リスト(特定のブロックを制限)のサポート
  • 単一の設定でブロックカテゴリ全体を制限
  • カスタムブロックタイプ、コンテンツブロック(個別のブロックインスタンス)、インラインブロックの個別制御
  • カスタム制限方式を可能にするプラグインアーキテクチャ
  • 制限を適用するためのドラッグ&ドロップによるブロック移動の検証
  • 新しく利用可能になったブロックカテゴリの制御(デフォルトで許可または制限)
  • 個別コンテンツアイテムのレイアウトオーバーライドとの互換性
  • レイアウトごと・リージョンごとの制限を行うサブモジュール
  • プログラムによる制限管理のためのConfig Actions(Drupal 12以降)
  • 多言語対応のカテゴリ処理

Use Cases

コンテンツ編集者を承認済みブロックのみに制限

マルチサイトやエンタープライズ環境で、Layout Builderに承認済みでテスト済みのブロックのみを表示するよう制限します。モジュールを有効にし、各コンテンツタイプの表示設定に移動して、各ブロックカテゴリで「特定のブロックを許可」を選択し、コンテンツ編集者が使用すべきブロックのみをチェックします。これにより、編集者が開発用ブロックやサイトデザイン基準に合わないブロックを誤って使用することを防ぎます。

特定の問題のあるブロック以外すべて許可

ほとんどのブロックは問題ないが、いくつかのブロックが問題を引き起こす場合(パフォーマンス、セキュリティ、デザイン)、拒否リストアプローチを使用します。問題のあるブロックを含む各カテゴリで「特定のブロックを制限」を選択し、非表示にするブロックのみをチェックします。そのカテゴリの他のすべてのブロックは引き続き使用可能です。

デザインシステムに合わせて使用可能なレイアウトを制限

テーマが特定のレイアウトのみを適切にサポートする場合、それらのレイアウトのみを表示するようLayout Builderを制限します。「セクションで使用可能なレイアウト」フィールドセットで「特定のレイアウトのみ許可」を選択し、テーマで適切なCSS/スタイリングがあるレイアウトのみをチェックします。

コンテンツタイプごとに異なる制限

異なるコンテンツタイプに異なるブロック可用性を設定します。例えば、ランディングページではプロモーションブロックを許可し、ブログ記事では制限します。各エンティティタイプとビューモードには独立した制限設定があります。

複雑なレイアウトのリージョンごとの制限

「Layout Builder Restrictions By Region」サブモジュールを有効にして、ブロックを特定のリージョンに制限します。例えば、ヒーローブロックを「バナー」リージョンのみに許可したり、サイドバーウィジェットがメインコンテンツエリアに表示されないよう制限したりできます。

インラインブロック作成の制限

コンテンツ編集者が新しいインラインブロック(コンテンツ管理の問題につながる可能性がある)を作成できないようにしながら、ブロックライブラリからの再利用可能なブロックの配置は許可します。「インラインブロック」カテゴリを制限して、インラインで作成できるブロックタイプを制御します。

Config Actionsによるプログラムでの制限

Drupal 12以降では、レシピでConfig Actionsを使用してプログラムで制限を設定します。サイトインストールや設定更新時に、entityViewModeRestrictionAppendRestrictedBlocksを使用してブロックを拒否リストに追加したり、entityViewModeRestrictionAppendAllowedBlocksを使用して許可リストに追加したりできます。

Tips

  • ほとんどのブロックを使用可能にして特定のブロックのみ非表示にする場合は拒否リストアプローチを使用
  • 厳密な制御が必要で特定のブロックのみ使用可能にする場合は許可リストアプローチを使用
  • 「既存および新規のすべてのブロックを制限」オプションは編集者に使用させたくないカテゴリに便利
  • 新しくインストールされたモジュールからのブロックを手動で承認したい場合は「新しく利用可能なカテゴリのすべてのブロックを制限」を有効化
  • コンテンツ編集者ロールでログインして制限をテスト - 管理者ユーザーは権限によっては一部の制限をバイパスする可能性がある
  • リージョン別サブモジュール使用時、まず「すべてのリージョン」に制限を設定し、必要に応じて特定のリージョンをオーバーライド
  • drush cexで設定をエクスポートして制限設定をバージョン管理
  • 完全な編集ワークフローにはContent Moderationとの組み合わせを検討

Technical Details

Admin Pages 2
Layout Builder Restrictions設定 /admin/config/content/layout-builder-restrictions

Layout Builder Restrictionsプラグインのアクティブ状態と実行順序を管理します。このページでは利用可能なすべての制限プラグインがドラッグ可能なテーブルで表示され、管理者がプラグインの有効/無効とウェイト(実行優先度)を設定できます。ウェイトが低いプラグインが先に実行されます。

コンテンツタイプ編集フォーム(レイアウトオプション) /admin/structure/types/manage/{content_type}

コンテンツタイプでLayout Builderが有効な場合、このフォームに制限設定が追加されます。「Layout options」フィールドセットを展開して、このエンティティタイプとビューモードで使用可能なブロックとレイアウトを設定します。

権限 1
Layout Builder Restrictionsを設定

/admin/config/content/layout-builder-restrictionsのLayout Builder Restrictions設定ページへのアクセスを許可します。この権限は制限プラグインの有効/無効と実行順序を設定できるユーザーを制御します。エンティティごとの制限を設定するには、適切なエンティティ表示権限も必要です。

Hooks 3
hook_plugin_filter_block__layout_builder_alter

Layout Builderの「ブロックを追加」UIで使用可能なブロックのリストを変更します。このフックはDrupalコアのプラグインフィルターによって呼び出され、ブロック定義がユーザーに表示される前に削除または変更できます。

hook_plugin_filter_layout__layout_builder_alter

Layout Builderの「セクションを追加」UIで使用可能なレイアウトのリストを変更します。このフックにより、新しいセクション作成時に使用可能なレイアウトプラグインを制限できます。

hook_form_entity_view_display_edit_form_alter

このモジュールはこのフックを使用してエンティティビュー表示フォームに制限設定UIを挿入します。他のモジュールはこのフックを使用して制限インターフェースをさらにカスタマイズできます。

Troubleshooting 5
リージョン別サブモジュール有効化後に制限が適用されない

ベースモジュールが既に設定された後にLayout Builder Restrictions By Regionを有効にした場合、各エンティティのレイアウト制限を再保存する必要があります。各コンテンツタイプの表示設定に移動し、フォームを保存してリージョンごとの制限を有効化します。

使用可能であるべきブロックがLayout Builderから欠落している

複数の場所を確認してください:1)ブロックのカテゴリが「restricted_categories」で完全に制限されている可能性、2)許可リストを使用している場合、ブロックがチェックされていない可能性、3)「新しいカテゴリのデフォルト制限」が「制限」に設定されていて、ブロックのカテゴリが以前認識されていなかった可能性、4)複数の制限プラグインがアクティブな可能性 - /admin/config/content/layout-builder-restrictionsを確認してください。

ブロックタイプが許可されているのにカスタムブロックが表示されない

このモジュールは「カスタムブロックタイプ」、「カスタムブロック」(特定のインスタンス)、「インラインブロック」を区別します。カスタムブロック(特定のインスタンス)に制限を設定した場合、それがカスタムブロックタイプの制限より優先されます。両方の設定を確認してください。

ブロックカテゴリが翻訳された名前を表示し問題が発生する

このモジュールは内部的に未翻訳のカテゴリ名を使用して多言語サイトを処理します。古いバージョンからアップデートしてlocaleモジュールが有効な場合、互換性を確保するために各エンティティのLayout Builder Restrictions設定を再保存してください。

ブロックのドラッグ&ドロップで制限が検証されない

ルートサブスクライバーサービスがアクティブであることを確認してください。drush crでキャッシュをクリアしてください。モジュールは検証を追加するためにlayout_builder.move_blockとlayout_builder.move_block_formルートをオーバーライドします。

Security Notes 4
  • 「configure layout builder restrictions」権限はコンテンツ編集者ができることを制御するため、信頼できる管理者のみに付与すべき
  • 制限はUIだけでなくサーバーサイドで適用される - ドラッグ&ドロップによるブロック移動は制限に対して検証される
  • このモジュールはロールベースの制限を直接提供しない - ユーザー固有の制限にはDrupalの権限システムと組み合わせて使用
  • Config Actions(entityViewModeRestrictionAppendRestrictedBlocksなど)はプログラムで制限を変更できる - これらを使用するレシピやカスタムコードを監査すること