2010-01-14 1 views
0

(참고 :. 원래는 내가 거기를 통해 응답을 결코 기억하기 전에 drupal.org에 게시 크로스 게시물에 대한 그래서, 죄송합니다)전처리 기능

안녕하세요, 방법이 (내장형 또는 기타) 특정 cck 노드 유형에 대한 전처리 기능을 추가 할 수 있습니까? 내 cck 노드 유형 내에서 필드의 전처리를하려고합니다. 현재 theme_preprocess_node를 사용하고 $ node-> type을 전환하거나 특정 필드 이름에 theming 함수를 사용할 수 있습니다. (여전히 현재 필드 사용법이 노드 유형 내에 있는지 확인하기 위해 스위치를 수행합니다. 에 대한). 내가 제안하고하는 것은 ... 이런 기능을 가지고

theme_preprocess_mynodetype(&$vars) { 
    // Now I can preprocess a field without testing whether the field is within the target content type 
} 

입니다 ...하지만 난 전처리 기능을 내가 템플릿 파일을

감사를 제안 할 수 있습니다 같은 방법을 제안 할 수 있는지 알아낼 수 없습니다 ! Rob

답변

1

나는 당신이 this post을 찾고 있다고 생각한다. 테마/템플릿 엔진마다 마술 당 노드 사전 프로세스는 없지만 $ vars 매개 변수에서 노드 유형에 액세스 할 수 있으므로 노드 유형을 전환 할 수 있습니다.

희망 하시겠습니까?

+0

감사 이봐, 난 하나는하지만 기능이 있음을 중지 난 (좀) 피하려고 한 스위치와 노드 프리 프로세서를 사용하는 것을보고 전처리 기가 커지기까지. 나는 실제로 theme_preprocessor_cat(), theme_preprocessor_dog() 등을 호출하는 스위치와 함께 theme_preprocessor_node를 사용할 수 있다고 생각합니다.하지만 어쩌면 자동 처리 방법이나 전처리 함수를 제안 할 수있는 방법이 없습니다 (tpl 파일이 제안되는 방식)? – rob5408

+0

"마술 당 노드 전처리"가 없기 때문에 이것을 하나의 것으로 표시했지만 Nikit의 답은 해결 방법을 제공합니다. – rob5408

3

CCK의 content.module이 함수를 참조하십시오

 

/** 
* Theme preprocess function for field.tpl.php. 
* 
* The $variables array contains the following arguments: 
* - $node 
* - $field 
* - $items 
* - $teaser 
* - $page 
* 
* @see field.tpl.php 
* 
* TODO : this should live in theme/theme.inc, but then the preprocessor 
* doesn't get called when the theme overrides the template. Bug in theme layer ? 
*/ 
function content_preprocess_content_field(&$variables) { 
    $element = $variables['element']; 
... 
 
+0

찾아 주셔서 고맙습니다. 이 함수에서 CCK는 실제로 tpl 파일에 대한 제안을 설정하지만 (내가 말할 수있는 것부터는) 사전 프로세스 기능을 설정하지 않지만, content.module을 통해 더 많은 것을 파헤 치게합니다. 내가 찾은 것을 게시 할 것입니다. – rob5408