2011-09-27 1 views
0

특정 페이지 (또는 페이지 그룹)를 변경하려는 경우 템플릿 파일을 핵심 템플릿에 추가합니다. 예를 들어 helloworld.tpl.php 및 node-helloworld.tpl.php 템플릿 파일을 사용하여 my/helloword 페이지를 주제로해야합니다.Drupal7 : 전처리 기능을 사용하여 특정 페이지를 테마로 시도하는 중 ... 빈 화면이 있습니다.

<?php 
/** 
* Adding or modifying variables before page render. 
*/ 
function phptemplate_preprocess_page(&$vars) { 

    // Page change based on node->type 
    // Add a new page-TYPE template to the list of templates used 
    if (isset($vars['node'])) { 
    // Add template naming suggestion. It should alway use doublehyphens in Drupal7. 
    $vars['template_files'][] = 'page--'. str_replace('_', '-', $vars['node']->type); 
    } 
} 
?> 

내가 어떤 구문 오류가 발생하는 것입니다하지만 난 여전히 빈 화면을 얻을 : 내가 좋아하는 사용자 지정 테마 파일에 대한 지원을 추가 전처리 함수를 작성하려고 있도록

지금 내가 할 모든 빈 화면입니다. 운이 없다.

누군가 코드/루틴에서 잘못된 점을 찾아 낼 수 있습니까?

Drupal7 + 오메가 하위 테마

친절 감사

답변

0

내가 여기 혼란의 작은 조금 있다고 생각 : node--type.tpl.php라는 이름의 템플릿 파일이 자동으로 입력 type있는 모든 노드에 대해 호출 될이 ... 자신에게 템플릿 제안을 추가 할 필요가 없습니다.

하나의주의 사항이 있습니다. 원래 node.tpl.php을 테마 폴더에 복사하고 캐시를 지워야합니다. 그렇지 않으면 드루팔 (Drupal)이 선택하지 않습니다.

또한 phptemplate_ 접두어를 사용하고 싶지 않습니다. 대신 기능을 MYTHEMENAME_preprocess_page이라고합니다.

노드 유형을 기반으로 페이지 템플리트를 추가하는 코드가 나타납니다. 함수 이름을 변경하고 캐시를 지운 후에도 여전히 문제가 있는지 확인하십시오.

도움이 되길 바랍니다.

+0

안녕하세요 @Clive, 도움 주셔서 감사합니다. 그것은 작동합니다! 그것이 저의 경이로움은 전처리 기능 없이도 작동한다는 것입니다. 내 테마는 pomerania 다. 그래서 나는 당신이 그 기능을 말했다 : pomerania_preprocess_page. 하나의 설명은 아마도 오메가 테마는 몇 가지 고급 기능을 가지고 있으며 이미 작성된 기능을 상속받습니다. 내 테마는 Omega Starterkit 테마입니다. 이것이 내가 더 이상 HTML5 구문을 사용하기 때문에 modules/node.tpl.php 코어 템플리트를 간단히 붙여넣고 편집 할 수없는 이유입니다. 건배! – Kandinski

+0

기꺼이 도와 드리겠습니다. 나는 당신이 옳다고 생각합니다. 오메가가하는 영리한 물건 일 것입니다. 많은 기본 테마가 있습니다. – Clive