drupal7 views useful code cheatsheet

Print views result

$view=views_get_view($view_name);
if(is_object($view)) {
  $view->set_arguments(array(3));
  $view->preview(); // print HTML
  $results=$views->result; // object results
}
 
$results = views_get_view_result($view_name, $display_id, array(3)); // object results
 
// 多值參數
$view->set_arguments(array(implode(',', $ids)));

注意set_arguments是接受一個array,而array的元素是表明每一個views中設置的contextual filters。若是contextual filter被設置爲Allow multiple values,則容許多值參數,但輸入的還是string,不是array。多值能夠用,或者+來分隔。php

filters change

$view = views_get_view($view_name);
$view->display_handler->default_display->options['filters']['xxx']['value'] = 'xxx';
print $view->preview();

pager change

$view = views_get_view($view_name);
$view->display_handler->default_display->options['pager']['type'] = 'some';
$view->display_handler->default_display->options['pager']['options']['items_per_page'] = 30;
print $view->preview();

基於Term ID的node list

Contextual filters:
    Content: Has taxonomy term ID
        Provide default value
            Raw value from URL
                Path component: 2   
        When the filter value IS in the URL or a default is provided
            Override title: %1
 
Path:
    /xxx/%
 
Filter criteria:
    Content: Published (Yes)
    Content: Type (= Xxxx)

How to use fivestar as sort criteria?

Relationship: Vote results
Add sort criterion: Vote results: Value, Relationship: Voting results

change default option by sort exposed form

$view = views_get_view($view_name);
if(is_object($view)) {
    $view->set_display($display_id);
    $view->set_exposed_input(array('sort_by' => 'publish_date'));
    return $view->preview();
}

how to use hook change row?

/**
 * Implements hook_views_pre_render
 */
function hook_views_pre_render(&$view) {
  if($view->name == 'view_name' && $view->current_display == 'display_id') {
    foreach($view->result as $key => $row) {
      unset($view->result[$key]->field_name);
    }
  }
}

drupal7 views 過濾條件(filter criteria),跳轉後無法顯示第一個默認值(default value)

解決方法:
一、在views編輯裏面找到filter criteria,點擊add 找下  內容: Type
二、用Grouped filters 不要用Single filter,選擇後再填完相關信息後方能夠顯示。
注意:下面必定要選擇any, 不能選擇其它,不然就不能所有顯示。

hook去掉某個filter

function hook_views_pre_view(&$view, &$display_id, &$args) {
  if ($view->name == 'view_name') {
    if(!empty($_GET['field_xxxxx'])) {
      if($_GET['field_xxxxx'] == 1) {
        if(!empty($view->display['default']->handler->options['filters']['field_xxxxx']))
          unset($view->display['default']->handler->options['filters']['field_xxxxx']);
      }
    }
  }
}
相關文章
相關標籤/搜索