2011-10-10 3 views
0

하나의 "프로젝트"를 참조하는 "버그/요청"노드가 있습니다.참조 된 노드 표시 참조

프로젝트 "노드"페이지에서 해당 프로젝트에 링크 된 버그/요청 목록을 표시하고 싶습니다. 이것이 가능한가?

이 좋거나 나쁜 : 여기

내가 그 일을 결국 어떻게? 더 좋은 방법이 있습니까?

<?php 
function digital_preprocess_node(&$vars) 
{ 
    $node = $vars['node']; 

    if ($node->type == 'project') 
    { 
     $bugs_requests_nids = array(); 
     $query = 'SELECT entity_id FROM field_data_field_project WHERE field_project_nid = :project_nid'; 
     $result = db_query($query, array(':project_nid' =>$node->nid)); 
     foreach($result as $row) 
     { 
      $bugs_requests_nids[] = $row->entity_id; 
     } 

     $vars['tasks'] = node_load_multiple($bugs_requests_nids); 
    } 
} 

답변

1

(template.php에) 나는 당신이이 (노드와 사용자 참조 드루팔 7 필드 제공) 내가 제대로 읽어 보지 않았

죄송합니다, 당신은 또한을 만드는 Corresponding node reference module을 원하는 References Module 싶은 생각 노드 참조 양방향 (다른 대답에서 주어진 모듈의 D7 버전). 할

당신이 최근 질문에서 드루팔 꽤 새로운 것 같은데요

하지만 당신은 (내 생각에)에 명중 한 어느 쪽이든 가장 좋은 방법 :

편집 새 코드를 해결하기 이. PHP 코드 (Drupal 사용자가 많지 않음)를 작성하는 것이 편한 경우에는 오버 헤드가 많은 기여 모듈을 사용하는 것보다 데이터를 직접 가져 오는 것이 더 효율적입니다.

몇 가지 사소한 점 :

    나는이 데이터는 노드의 수명이 다할 때까지 사용할 수 있습니다 대신 있도록 hook_node_load 함수 내에서, 템플릿 파일에서 그리고 사용자 정의 모듈에 코드를 이동하는 것을 고려 거라고
  1. (그런 식으로 여러 다른 상황에서 다시 사용할 수 있습니다). 템플릿 파일을 제외하고 어디에서나이 데이터를 재사용 할 필요가 없다면 어디에서나 괜찮습니다.
  2. 직접 필드 테이블로 이동하려는 경우 field_data_field_x 대신 field_revision_field_x 테이블을 사용해야하므로 수정 시스템을 활용하고 항상 최신 데이터를 가져올 수 있습니다.
  3. 필드를 여러 엔티티 유형에 연결할 수 있으므로 올바른 엔티티에 대한 올바른 필드 데이터를 가져야합니다 (이 필드를 다른 노드/엔티티에 연결하지 않을 수도 있지만 해야 할 것).

이 계정 적절한 필드 (안된하지만 작동합니다) 유형을 고려하여 코드의 약간 편집 된 버전입니다 :

function digital_preprocess_node(&$vars) { 
    $node = $vars['node']; 

    if ($node->type == 'project') { 
    $bugs_requests_nids = db_select('field_revision_field_project', 'p') 
     ->fields('p', array('entity_id')) 
     ->condition('entity_type', 'node') 
     ->condition('bundle', 'project') 
     ->condition('entity_id', $node->nid) 
     ->condition('revision_id', $node->vid) 
     ->execute() 
     ->fetchCol(); 

    $vars['tasks'] = node_load_multiple($bugs_requests_nids); 
    } 
} 
+0

내가 더 나은 방법이 above..is 무슨 짓을 참조하십시오? –

+0

굉장! 고맙습니다. –

관련 문제