Drupal 7でテンプレート内にブロックを表示させる方法。

2013.08.24 / Labs

「node.tpl.php」などのテンプレートに直接ブロックを表示する方法はいくつかあります。
「サイト構築 > ブロック」で追加したカスタムブロックでは主に下記の3つの方法があります。

最初の「block_custom_block_get()」はブロックIDを引数に渡して、ブロックの情報を取得します。
2番目の「block_load()」はDrupal 7から導入された機能で、やや冗長になってしまい、あまり使いやすくはありません。
3番目の「module_invoke()」はモジュールとしてのblockとして情報を取得します。
2番目と3番目に関してはカスタムブロックのほかに、下記に記述するViewsなどのモジュールでも利用できます。

 

上記はViewsの場合ですが、モジュール名とブロックのデルタ名(test-block)を引数にとります。

 

デルタ名は「サイト構築 > ブロック」にアクセスして、該当するブロックの設定ページのアドレスから確認できます。

 

Viewsの場合「CONTEXTUAL FILTERS」で引数を与えたい場合には、次の「views_embed_view()」で可能です。

Viewsの場合であれば、この方法が最もシンプルで利便性が高いです。