2008-10-27 140 views
11

我在Drupal 6站點上安裝了Profile,CCK和Views2模塊。我向用戶配置文件添加了一個字符串字段。我可以通過Views GUI構建器輕鬆過濾預設值,非常好。不過,我希望根據其他環境變量(即$_SERVER['SERVER_NAME'])動態設置過濾條件。如何爲Drupal視圖模塊創建自定義過濾器?

在那裏有一個基本的'如何寫一個自定義drupal視圖過濾器'嗎?我一直在查看文檔,但對於如何做到這一點我的簡單想法並不明顯。

回答

0

有可能,已經查看了爲我自己的網站安裝的過濾器類型,過濾器必須基於某些數據庫字段,在這種情況下,您嘗試實現的是不可能的。看起來過濾器爲生成的SQL查詢提供了WHERE子句。說了這麼多,如果你想進一步追求它,你最好的選擇是從一個已經爲Views提供過濾器的模塊開始。有針對Node模塊提供的視圖過濾器;或者,您可以查看audio module,它也提供了一些過濾器。另外,張貼到Drupal論壇或支持列表可能會出現另一個模塊,它可以讓你實現你正在嘗試的東西。

0

是的,你可以做到這一點。嘗試使用模塊「視圖過濾器塊」。一旦啓用該塊,在查看頁面時從「查看源代碼」中提取該塊的html。現在禁用「視圖過濾器塊」...創建您自己的自定義塊..添加代碼與任何CSS你喜歡使它看起來漂亮。在這段代碼中,使用php來動態地指定你想要的過濾器初始選擇。確保你真的選擇了過濾器所基於的字段..然後在自定義php塊中使用php代碼來編寫IF條件來檢查server_name值,並相應地爲過濾器變量指定正確的值。「

其他(甚至可能更好)的方法來實際編寫一個模塊來使用過濾器,所以這只是一個建議,同時給「Views PHP Filter」一個試試看,我還沒有使用它,但聽起來像是值得一試。

  • 由Drupal的用戶(Drupal的用戶名:drupdrips)
3

您可以創建喲你自己的功能如下添加你自己的過濾器。

<?php custom_views_embed_view($view_name, $display_id) { 
$view = views_get_view($view_name); 
$view->set_display($display_id); 
$id = $view->add_item($display_id, 'filter', 'node', 'created', 
         array('value' => array('type' => 'date', 'value' => date('c')), 'operator' => '<=')); 
return $view->execute_display($display_id); 
} 
?> 
+0

@AbhiG你有沒有嘗試過這種方法嗎?這似乎是一段有趣的代碼。我應該把我的代碼放在運算符中,替換'<='對嗎? – 2009-11-27 22:26:32

0

您可以使用viewsphpfilter模塊,它由node id.允許過濾視圖,但是有一個補丁,如果你需要延長本作user views