드루팔(Drupal)에는 Content Type 기능이 있어서, 입출력되는 내용이 다른 여러 글형식을 만들 수 있습니다. 하지만 어떤 글 형식이어도 같은 모양을 나옵니다.
드루팔은 기본적으로 Content Type을 위한 템플릿을 오버라이딩(Overriding) 할 수 있습니다. 그러면 다음과 같은 제어가 가능해 집니다.
글 형식에 따라 다른 모양으로 나오게 하려면 템플릿 파일을 만들어야 하는데, 방법은 두가지입니다.
node--[type].tpl.php
[type]에는 Content Type의 Machine Name을 입력합니다. 예를 들어 Machine Name이 xyz라면
node--xyz.tpl.php
와 같이 만들면 됩니다.
이 파일은 node.tpl.php의 변형이므로 본문 출력과 관련된 내용만 들어가고, 본문 영역만 디자인 할 수 있습니다. 즉, 전체적인 레이아웃을 변형할 수는 없습니다.
전체적인 레이아웃도 바꾸기 위해서는 page.tpl.php를 오버라이딩해 page--[type].tpl.php를 만듭니다. 예를 들어 Machine Name이 article라면
page--article.tpl.php
를 만들면 됩니다. 단, 이 템플릿 파일이 적용되게 하려면 template.php에 다음의 코드를 넣어야 합니다.
function THEME_preprocess_page(&$vars, $hook) { if (isset($vars['node']->type)) { $vars['theme_hook_suggestions'][] = 'page__' . $vars['node']->type; } }
THEME은 사용하는 테마의 이름으로 바꿉니다.
기본 템플릿을 오버라이딩 할 때 이름 규칙은 다음과 같습니다.
node--<content type>.tpl.php
<content type>부분을 admin/structure/types에서 보여지는 machine name을 지정하면 됩니다.
템플릿은 일반적으로 읽어 들이는 순서가 있습니다. 그러므로 nodeid에 대한 이름이 존재 한다면 content type에서 템플릿을 오버라이딩 하더라도 nodeid에 해당하는 템플릿을 먼저 읽어 들입니다.
읽어 들이는 템플릿의 우선 순위는 다음과 같습니다.
1번이 가장 먼저 읽히고 없으면 차례로 읽어 나갑니다. node.tpl.php는 가장 기본 템플릿이 됩니다.
"어떤 것을 완전히 알려거든 그것을 다른 이에게 가르쳐라."
- Tryon Edwards -