私が作成しているテーマで、デフォルトの場所とは異なる場所にブロックを配置したいと考えています。たとえば、ヘッダーに検索ブロックを配置します。
テーマからこれを行う方法はありますか: ブロックを要求してどこかに配置できますか?
私が作成しているテーマで、デフォルトの場所とは異なる場所にブロックを配置したいと考えています。たとえば、ヘッダーに検索ブロックを配置します。
テーマからこれを行う方法はありますか: ブロックを要求してどこかに配置できますか?
Drupalのテーマシステムは、ページのその部分をブロックを表示する領域に正確に変換するのに十分な柔軟性があります。このためには、リージョンへのコンテンツの割り当て.info
で説明されているように、テーマのファイルにリージョンを追加する必要があります。これにより、 page.tpl.phpで新しい変数を使用できるようになります。その後、Drupalの組み込みリージョンと同じ方法で、コンテンツをリージョンに割り当てることができます。regions[foobar] = Foobar
$page['foobar']
このシステムを回避してブロックをアドホックに表示する場合は、_block_render_blocksがブロックをレンダリングする方法を確認してください。
構成可能なブロックのアイデアを無効にしますが、それでも可能です。許可された領域以外のすべてに対して空のブロック テンプレートを作成する必要があります。または、このブロックのテーマ関数を提供/オーバーライドし、禁止された領域には何も返しません。
D7 では、テーマ .info ファイルにプレースホルダー領域を追加し、キャッシュをクリアしてそこにブロックを配置すると、領域のコンテンツを出力できます。
print render(block_get_blocks_by_region('region_name'));