2010-08-19 4 views
0

사진과 비디오를 주제별로 그룹화 한 광고 회사의 모든 프로젝트를 나열해야합니다. 예를 들어 "녹색 캠페인"아래에 해당 프로젝트와 관련된 모든 프로젝트를 나열하고 동시에 각 프로젝트에서 특정 프로젝트의 모든 그림과 비디오를 표시합니다 (그리드 사용). 내 접근 방식은 각 목록마다 다른보기를 만드는 것이지만 다른보기 내부에보기를 첨부 할 수는 없습니다.Drupal 관련보기 목록

그림, 프로젝트 및 주제에 대한 콘텐츠 유형을 만들었습니다. 각각은 서로를 참조합니다. (이 부분은 작동 중입니다)

답변

0

나는 이것이 가장 쉽고/좋은 방법이라고 말하지는 않겠지 만 작동해야합니다 ... 나는 node_reference, cck 및 views 모듈을 사용한다고 가정합니다. 두 가지 일을해야한다고 생각합니다.

먼저 주제에 대해 새 content_type을 생성하지 마십시오. 분류법 "캠페인"을 만들고 설정하여 "프로젝트"콘텐츠 유형에서 택 소노 미젬을 선택할 수 있도록하는 것이 좋습니다. 이것을 사용하여보기에서 "제목"을 필터링 할 수 있습니다. 을 내 예에서의 2 개 콘텐츠 유형이 있습니다 가정 해 봅시다 : 이벤트 및 eventsubscribers 이벤트가 여러 eventsubscribers에 대한 참조가이

둘째, 여기에 node_reference 모듈을 사용하여 노드를로드하는 예입니다. 이 예제에서는 tpl.php를 사용하여 콘텐츠 유형을 테마로합니다. http://drupal.org/node/17565, http://drupal.org/node/53464

  • http://drupal.org/node/266817는 필터링 할 주요 항목을 가지고있는 뷰를 만들기 자세한 내용을 살펴 있습니다. 내 예제에서는 모든 이벤트에 이벤트 구독자가 첨부되어 있으므로 노드 유형 (이벤트) 및 게시 된 노드 (예)에서 필터링하는보기를 만듭니다.

  • '노드'에 행 스타일을 설정하십시오. 이렇게하면 테마 맵에 node- [content-type] .tpl.php 파일을 만들 수 있습니다.

  • tpl.php 파일에서 (php)를 사용하여 모든 데이터를 인쇄 할 수 있습니다 : print_r($node); this (node-event.tpl.php) 노드 - [content-type] .tpl.php 파일을 만듭니다. 당신에게 모든 분야를 줄 것입니다. 이러한 필드에는 node_reference 필드가 있습니다.

  • node_reference 필드는 노드의 ID를 제공하므로 node_load를 사용하여 변수에 전체 노드를로드하십시오. 예 : $picturenode = node_load($node->field_ref_subscriber[0]['nid']). 여러 그림의 경우 foreach 루프를 사용하십시오.

  • node_load 다음에는 node_reference의 모든 필드가 변수에 있습니다 (다시 print_r을 사용하여 배열의 모양을 볼 수 있습니다).이 변수를 사용하여 그림을 인쇄 할 수 있습니다. 예를 들면 : print($picturenode->field_image[0]['view']); 특정 경우

의 node_load 당신에게 값 대신 뷰를 제공 할 것입니다. 따라서 imagecache 함수를 사용하여 그림 테마를 만드십시오. 그것은 좀 더 쉽게하기 위해, 여기에 몇 가지 예제 코드입니다 :

<?php 
// $Id: node.tpl.php,v 1.7 2007/08/07 08:39:36 goba Exp $ 
?> 
    <div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>"> 
    <?php if (!$page) { ?> 
     <h2 class="nodetitle"><a href="<?php print $node_url?>"><?php print $title?></a></h2> 
    <?php }; ?> 
    <div class="content"><?php print $node->content['body']['#value']; ?></div> 
    <div class="subscribers"><?php //this will load all subscribers to the event 
    foreach((array)$node->node_ref_subscribers as $subscriber){ 
     $subscriberdata = node_load($subscriber['nid']); //load the subscriber values in $subscriberdata 
     print($subscriberdata->field_subscriber_body[0]['value'];); //print subscriber field 
    } 
    ?></div> 
    <?php if ($links) { ?><div class="links">&raquo; <?php print $links?></div><?php }; ?> 
    </div> 
<?php 
//print_r($node); 
?> 

이 예제는 테스트되지 않았습니다, 당신은 무엇을 할 수 있는지의 거친 버전으로 볼 만하다. print_r을 사용하여 노드에서 사용 가능한 데이터 (node_load 이후의 node_reference)를 확인하십시오.