0

[Drupal 6의 경우] "my_content_type"이라는 콘텐츠 유형을 생성했다고 가정 해 보겠습니다. "page-node-my_content_type.tpl.php"를 작성하여 해당 전체 컨텐츠 유형에 대한 기본 템플리트를 대체 할 수 있습니다. 그런 다음 해당 콘텐츠 유형의 단일 노드 (예 : 노드 5555)를 추가로 맞춤 설정하는 가장 좋은 방법은 무엇입니까? Drupal 6에서 특정 노드를 사용자 정의하려면 어떻게해야합니까? 사용자 정의 템플릿이 노드의 컨텐츠 유형에 이미 적용되어 있습니까?

나는 다음과 같은 시도했지만 아무도 일하지 :

  • 페이지 노드 5555.tpl.php
  • 페이지 노드 my_content_theme-5555.tpl.php
  • 노드 5555.tpl을 .php

이 중 어느 것도 작동하지 않습니다. 그들은 모두 내 원래의 콘텐츠 유형 템플릿을 계속 사용합니다.

+0

template.php에 뭔가를 추가해야합니까? – technoTarek

답변

3

Drupal의 페이지 템플릿은 제안 시스템에서 작동합니다. 현재 URL을 기반으로 가능한 템플리트 파일의 배열이 작성됩니다. 존재하는 템플릿 파일을 찾기 위해 배열을 역순으로 반복합니다. 처음 발견 한 것이 사용됩니다. 템플릿 제안을 수정하는

드루팔의 테마 시스템은 후크를 제공합니다 .. 당신의 template.php를 열고 찾을

function phptemplate_preprocess_page(&$vars) { 

$ 변수는 [ 'template_files을, 제안이 들어 구체적으로 $ 바르 무엇을 바르 '] 사용할 수있는 전용 페이지 제안은 기본적으로

  • page.tpl.php
  • 페이지 node.tpl.php
  • 페이지 노드 - [NODE_ID] .tpl.php
[NODE_TYPE] .tpl.php 기본적으로 작동하지 않습니다

지금까지 메신저로 인식, 페이지 노드 - 따라서 이미 preprocess_page 템플릿을이 기능에 추가하도록 수정했을 가능성이 큽니다. 이 템플릿 제안의 다음과 같은 계층 구조를 수

function phptemplate_preprocess_page(&$variables) { 
    if ($variables['node']->type != "") { 
    $variables['template_files'][] = "page-node-" . $variables['node']->type; 
    $variables['template_files'][] = "page-node-" . $variables['node']->type . "-" . $variables['node']->nid; 
    } 
} 

그러나 당신이 이런 일을 할 수있는보다 구체적인 템플릿을 추가하려면

...

  • page.tpl.php
  • 페이지 node.tpl.php
  • 페이지 노드 - [NODE_ID] .tpl.php
  • 페이지 노드 - [NODE_TYPE] .tpl.php
  • 페이지 - 노드 - [NODE_TYPE] - [NODE_ID] .tpl.php 드루팔 7
+0

감사합니다. 그거야. 노드의 내용 (예 : 전체 페이지와 반대)을 node.pl.php로 타겟팅하는 방법에 대한 힌트가 있습니까? phptemplate_preprocess_node를 사용해야합니까? 주 템플릿 (page-node-my_content_type.tpl.php)을 해당 페이지를 비롯한 모든 콘텐츠 유형에 적용하고 싶습니다. 그러나 드루팔 (Drupal)이 단일 노드 (5555)의 컨텐트 섹션을 특정 렌더링하기 위해 다른 파일을 제안 해주기를 바랍니다. 네가 준 내용은 단지 컨텐트 섹션이 아닌 노드의 전체 템플리트를 사용자 정의하는 것입니다. – technoTarek

+0

후속 질문을 무시하십시오. phptemplate_preprocess_node 함수를 사용하면 필자가 필요로하는 것을 수행했다. 다시 한번 감사드립니다. – technoTarek

0

단지 page.tpl.php template 복사

페이지 -으로 이름 변경 -node - [node : id] .tpl.php

캐시를 지우고 조정을 시작합니다.

0
 

    function phptemplate_preprocess_page(&$variables) { 
     if ($variables['node']->type != "") { 
     $variables['template_files'][] = "page-node-" . $variables['node']->type; 
     $variables['template_files'][] = "page-node-" . $variables['node']->type . "-" . $variables['node']->nid; 
     } 
    } 

이 코드해야 hook_preprocess_page()이 노드 정보를 전달되지 않기 때문에하지 작동합니다. hook_preprocess_node() 않습니다. 따라서 사용자 정의 node.tpl을 쉽게 작성할 수 있지만 특정 노드에 대한 사용자 정의 page.tpl을 쉽게 작성할 수는 없습니다. 어쨌든 알아낼 수있었습니다하지 않는 것이 :

나중에 ...

기본적 드루팔에서 페이지 노드 NID.tpl.php이 특별한 코딩 작동합니다. 내 사이트에서는 작동하지 않지만 다음 코드를 사용하여 작동하게했습니다.

/** 
* Implementation of hook_preprocess_page(). 
*/ 
function MYMODULE_preprocess_page(&$variables) { 
    // Allow per-node theming of page.tpl 
    if (arg(0) == 'node' && is_numeric(arg(1))) { 
    $variables['template_files'][] = "page-node-" . arg(1); 
    } 
} 
관련 문제