プログラミングで飯を食え。腕をあげたきゃ備忘録!

PHP、JavaScript、HTML5、CSS3などWEB系言語を中心に基本テク、備忘録をまとめます。Android、Iphoneアプリ開発についても!

Drupal7でコンテンツタイプごとのテンプレートを作成する方法!

サクウェブTVはコチラ↓↓↓
サクウェブTV

複数のブログを作りたいときなど、

コンテンツタイプでシステム内部名称を、

blog1

blog2

blog3

などとする。

そして、コンテンツの追加でそれぞれのコンテンツタイプに、

記事を追加するなどしたら、

コンテンツタイプblog1はこういうレイアウト、

他はこういうレイアウトとしたいときがあると思います。

 

そういう場合は、node系のテンプレートを

それぞれのコンテンツタイプ専用に作ってあげればいけます。

 

例)

blog1 → node--blog1.tpl.php

blog2 → node--blog2.tpl.php

blog3 → node--blog3.tpl.php

 

これでコンテンツタイプごとにレイアウト可能なテンプレートがつくれました。

 

更に、そのテンプレートにコンテンツタイプで絞った記事を独自にマークアップしたい場合などは、

template.phpに以下の関数を追加してください。

/*
 * 特定のコンテンツタイプのシステム内部名称からノードオブジェクトを取得する
 */
function getNodeObjByContentType($type){
	$nodes = node_load_multiple(array(),array("type"=>array($type)));
        return !empty($nodes) ? $nodes : null;
}

引数にコンテンツタイプを入れれば、

該当のコンテンツタイプの記事だけをオブジェクトで取得してくれます。

各テンプレートの一番上などで呼んでおけばいいでしょう。

 

ここまで読まれて、

「え?Viewsを使えばいいじゃない・・」

って思った方のために一応、意図を説明しておきます。

 

こんなまどろっこしいことをする理由は、

theme内で完結できたほうが、

再利用可能性が上がるからです。

 

他のサイトを制作する場合でも、

同じシステム内部名称のコンテンツタイプを作りさえすれば、

themeをポイっと入れるだけで動作しますので、

場合によっては、こういう荒業も必要になることがあるため、

紹介してみた次第ですw