Drupalサイトのデフォルトのテーマがあるとします。ここでは、ビューやブロックなどを作成し、一般の人が望むようにすべてのスタイルを設定しました。さて、管理者として、私は完全に別のテーマを持ちたいと思います。問題ありません。themesディレクトリに2番目のテーマを作成し、管理者ユーザーのテーマ構成を2番目のテーマに切り替えます。しかし、2番目のテーマで、まったく異なるコンテンツ(つまり、ビュー、ブロックなど)を表示したい場合はどうでしょうか。例として私のフロントページを使用してみましょう(フロント)。現在、私のフロントページにはビューを使用したスライドショーがあります。このビューは、使用しているテーマに関係なく、明らかにフロントページに表示されます。では、私のフロントページでは、最初のテーマに使用しているスライドショービューとは、2番目のテーマにまったく異なるビュー(ブログ投稿のリストなど)を表示するにはどうすればよいでしょうか。
3 に答える
ブロックはテーマごとに構成されているため、最も簡単な方法はビューをブロックに配置することです。テーマが異なれば、ブロック構成も完全に異なります。このアプローチの潜在的な問題は、ブロックでホストされているビューで引数などをうまく機能させるには、さらに作業が必要になることです。
あなたのために働くかもしれないもう一つのオプションは、同じビューをテーマにした異なる方法を持つことです。ビューはDrupalのテーマレイヤーと非常にうまく連携し、特定のビューまたはビュー表示用のテンプレートファイルを作成できます。ビューの管理ページにあるテーマ情報のリンクをチェックして、ビューで可能なすべてのオーバーライドを確認してください。もちろん、これは、表示したいものの間にいくつかの共通の要素があることを前提としています。
3番目のオプションは、1つのページに複数のビューを表示し、権限システムを使用して、一度に1つだけが表示されるようにすることです。私は過去にこのアプローチを使用しましたが、要件が変更されると、複数のビューに変更を複製する必要があったため、管理がやや扱いにくくなりました。
質問がさまざまなパスで起動する管理テーマに関するものである場合、ブロックにはパスの可視性設定があります。ビューはページに表示されるだけでなく、ブロック内にある場合は処理されます。そうでない場合は、ページにどのように表示されますか?
フロントに関しては、2つのテーマがあり、ユーザーが切り替えることができると言う場合は、独自の「ルーティングコード」が必要です。これはサポートされていません。つまり、テーマに応じて関連するブロックを呼び出す独自のブロックが必要です。
これは、2つのかなり新しいが非常に強力なモジュールの不思議なアプリケーションのように継ぎ目があります。
コンテキスト-スペースと組み合わせたhttp://drupal.org/project/context-http://drupal.org/project/spaces
また
パネル http://drupal.org/project/panels
どちらにも、さまざまな基準に基づいて出力を変更するページのコンテキストを設定できる概念があります。あなたの場合、基準はページを表示するユーザーの役割になります。どちらも、CurtainDogが提供したトリックよりも扱いにくく、すべて非常に有効なアプローチです。これらの2つのモジュールの利点は、編成と選択のプロセスがはるかに健全で単純になることです。
どちらか一方にアドバイスするのは難しいですが、一言で言えば、パネルにはインターフェイスに多くのオプションがありますが、コードレベルで少し学習曲線があります。コンテキスト/スペースはプログラミングレベルでの操作が非常に簡単ですが、ほとんどのタスクを実行するにはより多くのコーディングが必要でした。どちらかにコミットする前に、両方を試すことをお勧めします。両方の素晴らしい議論については、このポッドキャストを聞いてください。