2010-08-19 90 views
0

我需要列出一個廣告公司的所有項目以及按照主題分組的圖片和視頻。 例如,在「綠色活動」下列出與該項目相關的所有項目,同時在每個項目展示下(使用網格)列出該特定項目的所有圖片和視頻。 我的做法是爲每個列表製作不同的視圖,但我無法在另一個視圖中添加視圖。Drupal相關視圖列表

我爲圖片,項目和主題創建了內容類型。每個引用彼此。 (這部分工作)

回答

0

我不會說這是最簡單/最好的方法,但它應該工作......我假設你正在使用node_reference,cck和views模塊。我認爲你應該做兩件事:

首先,你不應該爲主題創建一個新的content_type。最好創建一個分類「廣告系列」並設置它,以便您可以從「項目」內容類型中選擇taxonomyitem。您可以使用它來過濾視圖中的「主題」。其次,下面是使用node_reference模塊加載一個節點的示例: 在我的示例中,假設有兩種內容類型:事件和事件訂閱者 一個事件引用了多個事件訂閱者。在這個例子中,我將通過使用tpl.php來演示內容類型。欲瞭解更多信息,看看:http://drupal.org/node/17565http://drupal.org/node/53464http://drupal.org/node/266817

  • 創建要過濾的主項的視圖。在我的例子中,每個事件都有附加的事件訂閱者,所以我創建了對節點類型(事件)和節點發布(是)的視圖過濾。

  • 將行樣式設置爲'節點'。這將使您能夠在主題地圖中創建節點 - [內容類型] .tpl.php文件。在您的主題地圖(node-event.tpl.php)中創建節點 - [content-type] .tpl.php文件

  • 在tpl.php文件中,您可以使用(php)打印所有數據:print_r($node); this會給你所有的領域。這些字段將是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)。