Panelizer(廃止)
Panelizerは、サポートされているDrupalエンティティをPanelsディスプレイとして扱えるようにし、バンドルごとに柔軟なデフォルトディスプレイを提供し、オプションでエンティティごとのカスタマイズも可能にします。
panelizer
インストール
composer require 'drupal/panelizer:8.x-5.0'
composer require 'drupal/panelizer:8.x-4.4'
概要
Panelizerは、サポートされているエンティティ(Node、Taxonomyターム、ユーザー、コメント)をPanelsレイアウトシステムを使用してレンダリングできるようにする、強力なDrupal 7.xモジュールです。これにより、サイト構築者はカスタムコードを必要とせずに、あらゆるエンティティタイプに対してカスタマイズされた柔軟なレイアウトを作成できます。
このモジュールは、以前Panelsにバンドルされていた「Panel Nodes」モジュールの後継および置き換えとして機能します。Drupalコアのエンティティ以外の追加エンティティタイプをサポートするために拡張可能なプラグインベースのアーキテクチャを提供します。
各エンティティバンドル(コンテンツタイプ、ボキャブラリなど)では、各表示モードを個別に設定できます。このモジュールは4つの動作モードをサポートしています:デフォルトなし/選択なし、デフォルトあり/選択なし、デフォルトなし/選択あり、デフォルトあり/選択あり。これにより、エンティティの表示方法とコンテンツ編集者がディスプレイを選択またはカスタマイズできるかどうかを細かく制御できます。
このモジュールは完全なリビジョンサポートを含み、編集ワークフロー管理のためにRevisioningモジュールとWorkbench Moderationモジュールの両方と統合されています。
Features
- すべてのDrupalコアエンティティをサポート:Node、Taxonomyターム、ユーザー、コメント。カスタムエンティティへの拡張も可能
- バンドルごと、表示モードごとの設定により、各エンティティタイプ/バンドルの組み合わせに異なるPanelディスプレイを適用可能
- 複数ディスプレイの選択をサポート - エンティティバンドルは複数のデフォルトディスプレイを持ち、エンティティごとに選択可能
- 4つの動作モード:デフォルトなし/選択なし、デフォルトあり/選択なし、デフォルトなし/選択あり、デフォルトあり/選択あり
- RevisioningモジュールとWorkbench Moderationモジュールとの統合による完全なコンテンツリビジョンサポート
- ディスプレイのライブ編集のためのPanelsを通じたIn-Place Editor(IPE)サポート
- フルページオーバーライド機能のためのPage Manager統合
- パネル化されたコンテンツのフィルタリングと表示のためのカスタムハンドラを持つViews統合
- パネル化されたエンティティコンテンツのインデックス作成のためのSearch API統合
- Panelizer設定をエクスポートするためのFeaturesモジュール統合
- カスタムエンティティタイプへの簡単な拡張を可能にするプラグインベースのアーキテクチャ
- 複雑なディスプレイ設定のためのContextとRelationshipのサポート
- エンティティごとのCSSクラス、ID、カスタムCSSコードのサポート
- エンティティバンドルごとに許可されるコンテンツタイプとレイアウトの設定
Use Cases
コンテンツタイプごとのカスタムランディングページ
パネル選択を有効にして「ランディングページ」コンテンツタイプでPanelizerを有効にします。複数のデフォルトディスプレイ(例:「2カラム」、「3カラム」、「フィーチャード」)を作成します。コンテンツ編集者は各ランディングページでどのレイアウトを使用するかを選択し、その中のコンテンツをカスタマイズできます。
パーソナライズされたユーザープロファイル
管理者がカスタムプロファイルレイアウトを作成できるように、ユーザーエンティティでPanelizerを有効にします。適切な権限を持つユーザーは、許可されたコンテンツタイプ内で自分のプロファイルディスプレイをカスタマイズできます。
Taxonomyランディングページ
TaxonomyタームでPage Managerオーバーライドを有効にしてPanelizerを有効にします。異なるボキャブラリに対して異なるデフォルトディスプレイを作成し、カテゴリページにプロモートされたコンテンツ、フィルタ、カスタムブロックを持つユニークなレイアウトを可能にします。
記事ごとのカスタマイズによる一貫した記事レイアウト
デフォルトディスプレイを持つ記事コンテンツタイプでPanelizerを有効にします。すべての記事は自動的に標準レイアウトを受け取りますが、編集者は特集コンテンツに特別なレイアウトが必要な場合に個々の記事をオーバーライドできます。
表示モード固有のディスプレイ
同じコンテンツタイプに対して異なる表示モードで異なるPanelizerディスプレイを設定します。例えば、フルページ表示用に1つのレイアウト、ティーザー表示モード用に別のレイアウト、検索結果用にさらに別のレイアウトを使用できます。
Tips
- フルページオーバーライド表示モードの場合、競合する可能性があるためデフォルト表示モードもパネル化しないことをお勧めします
- エンティティのPanelizer設定を変更するには、常にそのエンティティに対応する「更新」権限が必要です
- CSSクラスフィールドでコンテキスト置換を使用して、エンティティデータに基づく動的なクラス名を作成できます
- カスタムモジュールデータは$panelizer->extra(シリアライズされた配列)に保存しますが、衝突を避けるためにキーに名前空間を付けてください
- カスタムエンティティ用にPanelizerを拡張する場合、Nodeプラグインを出発点としてコピーし、ハンドラクラスを変更してください
Technical Details
Admin Pages 7
/admin/structure/panelizer
すべてのサポートされているエンティティタイプでPanelizerを有効化および設定するための主要な設定ページです。このページでは、各エンティティタイプ(node、user、taxonomy_term、comment)のテーブルが表示され、バンドルと表示モードごとにPanelizerを有効/無効にするチェックボックスがあります。
/admin/structure/panelizer/{entity_type}/{bundle}.{view_mode}
特定のエンティティバンドルと表示モードの組み合わせに対するデフォルトのPanelizerディスプレイの設定を行います。バンドルでパネル選択が有効になっていない場合にのみアクセス可能です。
/admin/structure/panelizer/{entity_type}/{bundle}/allowed
このエンティティバンドルのパネルディスプレイを編集する際に利用可能なコンテンツタイプ(ペイン)を設定します。
/admin/structure/panelizer/{entity_type}/{bundle}.{view_mode}/layout
デフォルトディスプレイのPanelsレイアウトを変更します。新しいレイアウトを選択し、オプションでリージョン間でコンテンツを移動するウィザードインターフェースを提供します。
/admin/structure/panelizer/{entity_type}/{bundle}.{view_mode}/content
パネルディスプレイのリージョン内のコンテンツ(ペイン)を編集します。ペインの追加、設定、配置のためにPanelsエディタインターフェースを使用します。
/admin/structure/panelizer/{entity_type}/{bundle}.{view_mode}/context
パネルディスプレイの追加コンテキストとリレーションシップを設定します。コンテキストはペインで使用できる追加データを提供します。
/admin/structure/panelizer/{entity_type}/{bundle}.{view_mode}/list/{name}/access
この特定のデフォルトディスプレイがいつ使用されるかを決定するアクセスルールを設定します。CToolsアクセス制御システムを使用します。
権限 7
Hooks 8
hook_panelizer_defaults_override_alter
panelizer_defaults_overrideのカスタマイズを許可します。主にFeatures Overridesモジュールで使用されます。
hook_panelizer_operations_alter
Panelizerオブジェクトにカスタムオペレーションを追加します。オペレーションはpanelizerデフォルトと個々のエンティティの両方で実行できます。データは$panelizer->extra(シリアライズされた配列)に保存できます。
hook_panelizer_entity_plugin_process_alter
CToolsプラグイン初期化中のエンティティプラグイン処理のカスタマイズを許可します。
hook_panelizer_overview_links_alter
エンティティのPanelizer概要ページに表示されるリンクをカスタマイズします。
hook_panelizer_delete_default
デフォルトのpanelizerオブジェクトが削除される直前にアクションを実行します。関連データのクリーンアップに使用します。
hook_panelizer_access
標準の権限を超えてPanelizer管理インターフェースへのアクセスを調整します。アクセスを許可する場合はTRUE、拒否する場合はFALSE、他のアクセスチェックに委ねる場合はNULLを返します。
hook_panelizer_access_alter
定義されたpanelizerアクセス定義を変更します。他のモジュールからのアクセス決定をオーバーライドできます。
hook_panelizer_clone_panelizer
Panelizerオブジェクトがクローンされ、保存される前に変更します。パネルペイン内に参照を保存するモジュールに便利です。
Troubleshooting 6
パスエイリアスのリセットを引き起こすバグを修正したPathautoモジュールv7.x-1.3以降に更新してください。
これは対処中の既知の問題です。更新と回避策については https://www.drupal.org/node/2457113 を参照してください。
ユーザーが'administer panelizer [entity_type] [bundle] overview'権限を持っていることを確認してください。この権限はタブを表示するために必要です。
admin/structure/pagesにアクセスして、エンティティタイプに適切なPage Managerページ(例:Nodeの場合はnode_view)を有効にしてください。
表示モードは、Panelizerに表示される前に、エンティティの「ディスプレイの管理」設定ページのカスタムディスプレイ設定セクションで有効にする必要があります。
Panelizer 7.x-3.xはリビジョン対応であり、リビジョン用にパネルを複製します。データベースサイズを管理するために、定期的に古いリビジョンをクリーンアップしてください。
Security Notes 3
- 設定フォームに入力されたCSSコードは安全性のためにフィルタリングされますが、控えめに使用する必要があります
- エンティティ権限(更新アクセス)は、Panelizer権限に加えて常に必要です
- IPE(In-Place Editor)は、エンティティ更新権限とPanelizerレイアウト/コンテンツ権限の両方を尊重します