Views 2.x 要改變排序方式的方式跟 1.x 差不多,最大的差異是設定上要繫結 views_handler 的物件,處理上比較麻煩。

底下假設目前排序方式是依據 "Post date" desc,而我們想要在傳遞任意的一個參數,改變其排序順序為根據 "type" asc, "Post date" desc,即插入一個 "type" asc 條件在原先的 "Post date" desc 之前。

  1. 插入一個 Global:Null 的 Argument
  2. Validator options 中的 Validator 設定為 PHP Code
  3. PHP validate code 中填入:
  4. $sort = views_get_handler('node', 'type', 'sort');
    $options = array(
      'order' => 'ASC',
      'id' => 'type',
      'table'=> 'node',
      'field'=>'type',
      'relationship'=>'none',
    );
    
    array_unshift($view->sort, $sort);
    $sort->init($view, $options);
    
    return true;
    

  5. 按下 Update 按鈕
  6. 之後便可在 Live Preview 檢視結果~

views_get_hander 的三個參數為:

  1. 表格名稱
  2. 欄位名稱
  3. handler 種類:sort, field, argument, filter, relationship

$options 的內容,可以建立一個你想要的排序條件,然後 dpm($view->sort) 來觀察~

創作者介紹

失落的技術

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()