私がこの質問を書いているのは、Drupalコミュニティの「ページマネージャーとは」と「パネルとは」についての混乱があるからです。
Ctools
Ctools には、「ページマネージャ」というサブモジュールがあります。このモジュールは、その核心部分で、 hook_men へのグラフィカルユーザーインターフェイスです。システムに新しいパスを作成するか、Coreが提供するパスの一部を引き継ぐことができます。
ページマネージャ
ページマネージャがパスを管理すると、それを使用していくつかの異なることを実行できます。デフォルトでは、リダイレクトを提供できます。これの一般的な使用例の1つは、「ファクトボックス」や「画像ノード」など、単独で表示することを目的としていないため、適切なテーマが設定されていないノードへのアクセスを拒否することです。もう1つは、用語ビューから同じ用語のSolr検索にリダイレクトすることです。
ページマネージャの主な利点の1つは、モジュール Context と混同しないように、「コンテキスト」を処理する方法を導入することです。ここでのキッカーは、「少しスマートなブロック」であるペインがシステムに依存関係を宣言できることであり、実際の引数(コンテキストと呼ばれる)が渡されます依存性注入-スタイル。
たとえば、DIに不慣れでDrupalに精通している場合、これにより、「メニューパスから参照される唯一のノード」を取得するために、再度menu_get_objectを使用する必要がなくなります。パスに複数のノードがある場合はどうなりますか?または、エンティティ参照からのノードに基づいてブロックを本当にしたい場合は?これは、ページマネージャーでは問題にならず、allブロック(ペイン)がはるかに柔軟で再利用可能になります。
パネル
ただし、最も一般的な使用例は、パスのlayoutおよびrenderingを Panels に渡すことです。パネルには、レイアウトをコードで、または直接ブラウザーで定義するためのツールが用意されており、ブラウザーにコンテンツを直接配置できます。
結論
これらのモジュールはどちらも非常に強力であり、ドキュメントが比較的不十分であるため、多くの人がモジュールに不満を抱いています。ただし、より大きなサイトを構築している場合は、それらの使用方法を理解することは価値があります。特に、「ページ」とレイアウトを処理するためのアプローチがDrupal 8コア、礼儀 EclipseGC 's SCOTCH initiative 。関連 sandboxプロジェクト
さらに読む
これらのツールで実行できるその他の興味深い例:
Drupal 7では、Page Managerが Panels モジュールの基盤でした。
" Learn Page manager "は、興味深い(そして素晴らしい)ビデオのセットです。 Panels モジュールに関連するさまざまなトピックが含まれています。このトピックに関する動画全体の要約を次に示します(上記のリンクからの引用):
- ページマネージャを使用すると、コンテキスト情報を柔軟かつ一貫した方法で収集および管理できます。これはDrupal Webサイトでインフラストラクチャを構築する上で重要な部分であり、このモジュールの使用方法を知っている必要があります。
- スクリーンキャストシリーズは、経験豊富なDrupal開発者を対象としています。
- エピソード1、2、3では、カスタムページ、バリアント、選択ルール、および(ある程度)コンテキストオブジェクトなどの最も基本的な概念を紹介します。
- エピソード4、5、6、および7は、ビューの統合に重点を置いてパネルについて説明しますが、効率的なキャッシュについてもいくつか説明します。
- アクセス制御、メニュー項目、およびほとんど知られていないが非常に便利なコンテキスト管理モジュールに関するエピソード8および9。
- エピソード10と11では、ビューをコンテキストとして使用するなど、ページマネージャーでコンテキストオブジェクトを使用する方法について詳しく説明しています。これは、ページマネージャーの本当の力があるところ、私見です。
- エピソード12と13は、パネルを使用してノード編集フォームを簡単に再配置する方法、インポート/エクスポート設定、ページマネージャーで使用できるいくつかの追加モジュールなど、さまざまな要素を収集します。
Panelsモジュールに関する別のすばらしい説明については、 パネルの説明:Drupal開発者向け の概要)を参照してください。
Drupal 8の場合 ページマネージャ は独立したモジュールになりましたが、以前は(Drupal 7まで)、 CTools モジュール。(D8関連の)プロジェクトページからの引用は次のとおりです。
新しいページの作成をサポートし、そのページ内にブロックを配置できます。
Drupal 7のページマネージャーのように、それぞれに独自の選択条件を持つ「ページバリアント」の概念を提供します。
さらに、/ node /%をオーバーライドしてノードを表示するときに表示される内容を変更するなど、既存のページを引き継ぐために使用できます。
これは、コア
Conditions
、Context
、およびBlocks
APIを使用してこれを実現します。