2009-12-22 40 views
4

我曾經知道如何做到這一點,但我似乎無法得到排序工作在一個視圖中,在一個塊中顯示過濾器。我希望能夠通過例如類型,價格等進行過濾,但也可以通過排序選項來按這些項目進行排序。將排序添加到Drupal上的視圖?

如何獲得排序工作?

+0

出於好奇你是否設法解決這個問題? – 2009-12-27 18:33:03

+0

我正在嘗試451F的方法。和不。但我會嘗試impliment views_query_alter鉤子,看看會發生什麼。將在我工作時報告。 – coderama 2010-01-18 14:23:47

回答

4

我使用的代碼來覆蓋非表視圖

function views_tweak_views_query_alter(&$view, &$query) { 
    if ($view->name == 'products'){ 
    if (arg(3) == 'pu') $query->orderby[0]='uc_products_sell_price ASC'; 
    if (arg(3) == 'pd') $query->orderby[0]='uc_products_sell_price DESC'; 
    if (arg(3) == 'nu') $query->orderby[0]='node_title ASC'; 
    if (arg(3) == 'nd') $query->orderby[0]='node_title DESC'; 

    } 
} 

排序,並把與這些網址

+0

你能解釋一下你是如何實現這個的?你把它放在template.php中嗎?或者究竟在哪裏?這個鉤子什麼時候叫?每次觀看,呃,觀看? – coderama 2010-01-18 14:14:36

+0

我把它放在單獨的模塊中。鉤子改變一個視圖查詢來改變排序。每次打電話。鑑於我添加4個鏈接(排序名稱,排序名稱,價格排序和價格下調)。在$ query-> orderby [0]存儲字段和方向進行排序。 – 451F 2010-01-22 11:51:11

2

AFAIK你不能像過濾器一樣公開排序標準。

我看了看周圍發現this module。這個想法是創建幾個視圖,每個視圖都有不同的排序標準,並將它們與標籤鏈接在一起。這有點駭人聽聞,可能無法使用暴露的濾鏡。該模塊仍處於beta版本,我還沒有測試過,所以不能說它有什麼好處。

+0

我記得特意在過去設置了一個選項,它會在視圖頂部顯示下拉菜單。我想知道如何做到這一點。 :-) – coderama 2009-12-23 06:01:53

1

如果您選擇使用表格佈局,則可以按列排序。該功能內置於視圖中。

1

視圖模板鏈接以防萬一你找不到在哪裏設置這個,看的視圖左側(在編輯模式下),在基本設置下,選擇「表格」。點擊「設置」(看起來像是「表格」選項右側的一個小齒輪圖標),您將看到所有顯示字段的列表,您可以在其中選擇哪些可排序/不可以,以及哪些是默認排序。

0

將排序添加到鉤子中Drupal less程序代碼的視圖。

您需要在顯示頁面中使用參數。對於之前的網頁

使用分類菜單..下:

  1. 考慮到與路徑(例如)創建一個顯示頁: SOME_PATH /%/ by_totalcount
    1.1。通過totalcount爲此顯示器製作排序標準
  2. 在此視圖中使用路徑製作另一個不顯示頁面(例如): some_path /%/ by_date
    2.1。使排序標準,該按日期顯示
  3. 的代碼創建新的塊:

<?php $url= urldecode($_SERVER['REQUEST_URI']); switch($url) { case '1': $class = 'top'; $title_h2 = 'top'; break; case '/taxonomy/term/6 3 ': $class = 'travel'; $title_h2 = 'travel'; break; ................. } global $base_url; $url_rating = $base_url.'/'.arg(0).'/'.arg(1).'/'.arg(2).'/rating'; $url_created = $base_url.'/'.arg(0).'/'.arg(1).'/'.arg(2); ?> <div class="<?php print $class; ?>"> <div class="title"> <h2> <?php print $title_h2; ?></h2> <p>Sort node: <span class="sort_type"><a href="<?php echo $url_rating; ?>">by rate</a></span> | <span class="sort_type"> <a href="<?php echo $url_created; ?>">by date</a></span></p> </div> </div> <p>&nbsp;</p>

VOILA


對不起,我的英語..它是不是我的母語))


+0

考慮使用l()函數來生成標籤。你甚至不想得到$ base_url - l()可以爲你完成大部分繁重的工作。 – 2012-10-28 19:44:00