2009-09-02 96 views
0

我有Drupal 5視圖(必須是「視圖1」所以),其中包含Event_StartTime字段,該字段通常顯示內部具有實際日期的字段。但我也有一些Event_StartTime字段值的記錄,如1969年12月31日 - 下午8:00這在視圖上看起來不好,我需要用一些自定義標籤替換它們,如「無日期可用」。Drupal:替換視圖中的字段值

我可以以某種方式將這個條件(如果value = x顯示值y)注入視圖嗎? 即使我在SQL中打印「No Date Available」時,視圖也會顯示空字段。總之,一般問題是,視圖字段是有限制的,有時你只需要替換一些字段值,但它可能是「日期或空白」或「節點引用id或什麼都不是」。

P.S.這種情況可能有點複雜,因爲我使用「Bonus:Views Export」模塊,它使我的視圖返回CSV數據。

回答

1

對Henrik的評論的建設,主題似乎是我做的最好的地方。你需要添加一個函數到你的template.php文件來覆蓋這個特定的視圖。請參閱Views 1 theming documentation。根據此文檔,您將創建一個功能,其名稱爲表單視圖

function THEMENAME_view_view_VIEWNAME($view, $type, $nodes, $level = NULL, $args = NULL) 

以主題全景。 $nodes是視圖中包含的部分加載節點對象的數組。您可以加載的每個節點,並檢查Event_StartTime字段的值與這樣的:

foreach ($nodes as $id => $node) { 
    $temp_node = node_load($node->nid); 
    //now check value of Event_StartTime assuming that is what you named the field 
    if ($temp_node->Event_StartTime === 'Dec 31 1969 - 8:00pm') { 
    $temp_node->Event_StartTime = 'No Date Available'; 
    } 
//output the fields of your view . . . 
} 

我只展示瞭如何檢查Event\_StartTime字段的值,而我不知道的實際價值是什麼。 1969年12月31日在time()函數返回的日期之前,所以如果這不起作用,您可能需要檢查是否Event_StartTime === '',如果事件字段只剩下空白,則可能爲true。你仍然需要主題化剩下的字段並將它們輸出爲HTML,這對於改變一個字段的輸出可能太過痛苦。您也可以覆蓋單個字段的輸出。我沒有這樣做,所以我不能通過它,但我上面給出的鏈接有一些覆蓋字段主題函數的文檔。

2

我不是很熟悉的0點了,但我認爲至少有兩個選項:

  1. 在主題化水平 - 你可以重寫的字段模板,並把檢查的特定日期值在那裏,找到時替換它。當然,這個檢查將取決於日期的格式,所以如果你改變了,你也需要調整檢查。
  2. 在視圖生成級別 - 您可以從代碼執行「手動」視圖,並在實例化之後和/或執行之後,但在渲染之前檢查視圖對象(請參閱example of manipulationg the view object in Views2)。你可以在執行後操作result屬性,但是在渲染之前,或者你可以在實例化之後在其中放置一個預渲染回調(但我不確定這是否已經可以在Views1中實現)。