2010-06-27 5 views
3

html로 렌더링되기 전에 노드 내용 Array를 수정해야합니다. 그런 이유로 내 노드 템플릿에서 $ content 변수를 사용할 수 없습니다. template.php 파일에서 찾고 있는데 찾을 수 없습니다.

감사

노드에 사용 가능한 변수를 생성
+0

ps. template.php 파일에 $ vars [ 'content']를 인쇄하려고했으나 html로 이미 렌더링되었고 구조화되지 않았습니다. – aneuryzm

답변

1

AFAIK를, 당신은, 테마 내에서 렌더링되지 않은 노드 콘텐츠 배열에 액세스 할 수 없습니다 처리 사이클 (즉, 콘텐츠 배열은 이미 관찰 된대로 렌더링됩니다).

노드 내용 배열 에 액세스하고 수정하는 표준 방법은이 렌더링되기 전에 '보기'작업에 응답하여 사용자 정의 모듈 내에 hook_nodeapi()을 구현하는 것입니다. 이것은 내용 배열이 어셈블 된 후에 호출되지만 렌더되기 전에 임의로 조정할 수 있습니다.

다른 모듈에서도이 작업을 수행 할 수 있습니다.이 경우 다른 모듈에서 제공하는 값을 조정하려는 경우 모듈의 호출 순서와 관련이 있으므로 모듈 무게를 조정해야 할 수도 있습니다 그것은 다른 사람들을 따라 부름 받았습니다.

+0

안녕하세요, 그래서 함수를 사용자 정의 모듈에 추가했습니다 : function hook_nodeapi (& $ node, $ op, $ a3 = NULL, $ a4 = NULL) {echo "hook invoked"; 주사위(); }하지만 아무 일도 일어나지 않습니다. 캐시를 새로 고쳤습니다. 고마워요 – aneuryzm

+0

@ 패트 릭 : 모든 hook_ * 함수와 마찬가지로 모듈을 구현 한 후에이 이름을 사용해야합니다.이 경우'yourModuleName_nodeapi (& $ node, ...)'. –

+0

그래, 고마워. 지금 방금 알아 냈어! – aneuryzm

0

원래 기능은 다음과 같습니다 http://api.drupal.org/api/function/template_preprocess_node/6

당신은 원래의 기능 때문에 당신을 허용 한 후 실행합니다 template.php 안에 자신의 노드 전처리 기능을 구현하여 템플릿 변수를 수정할 수 있습니다 자신의 변수를 추가 : 테마 처리 라 발생으로

function phptemplate_preprocess_node(&$vars, $hook) { 
    // Here you can add your custom variable... 
    $vars['myContent'] = "something"; 
} 
+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 내가 실제로 원하는 것은 내용이있는 구조화 된 트리입니다. 콘텐츠가 $ vars [ 'content']에 html로 저장된다는 것을 알았습니다. 그래서 이미 렌더링되어있어 아이들에게 접근 할 수 없습니다 (CCK 필드). – aneuryzm

+0

$ vars [ 'node'] 변수 안에 원시 노드 데이터가 있습니다. 거기에 무엇이 있는지 확인하려면 var_dump ($ vars); 내부 전처리 기능 및 페이지 소스보기. – bas

+0

$ vars [ 'node']의 내용을 바꾸면 노드에서도 자동 교체됩니까? 나는 그것이 왜 중복되는지 이해하지 못한다. 나는 $ vars [ 'content']와 $ vars [ 'node']를 가지고있다. – aneuryzm

관련 문제