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