Drupal7でコンテンツタイプごとのテンプレートを作成する方法!
複数のブログを作りたいときなど、
コンテンツタイプでシステム内部名称を、
blog1
blog2
blog3
などとする。
そして、コンテンツの追加でそれぞれのコンテンツタイプに、
記事を追加するなどしたら、
コンテンツタイプblog1はこういうレイアウト、
他はこういうレイアウトとしたいときがあると思います。
そういう場合は、node系のテンプレートを
それぞれのコンテンツタイプ専用に作ってあげればいけます。
例)
これでコンテンツタイプごとにレイアウト可能なテンプレートがつくれました。
更に、そのテンプレートにコンテンツタイプで絞った記事を独自にマークアップしたい場合などは、
template.phpに以下の関数を追加してください。
/* * 特定のコンテンツタイプのシステム内部名称からノードオブジェクトを取得する */ function getNodeObjByContentType($type){ $nodes = node_load_multiple(array(),array("type"=>array($type))); return !empty($nodes) ? $nodes : null; }
引数にコンテンツタイプを入れれば、
該当のコンテンツタイプの記事だけをオブジェクトで取得してくれます。
各テンプレートの一番上などで呼んでおけばいいでしょう。
ここまで読まれて、
「え?Viewsを使えばいいじゃない・・」
って思った方のために一応、意図を説明しておきます。
こんなまどろっこしいことをする理由は、
theme内で完結できたほうが、
再利用可能性が上がるからです。
他のサイトを制作する場合でも、
同じシステム内部名称のコンテンツタイプを作りさえすれば、
themeをポイっと入れるだけで動作しますので、
場合によっては、こういう荒業も必要になることがあるため、
紹介してみた次第ですw