Drupal Views2 API

转自:http://groups.drupal.org/node/10129

  • 加载view:

    <?php
    $view
    = views_get_view('view_name');
    ?>

     

     

  • 初始化view并且添加argument,设置需要的选项:

    <?php
    $view
    ->set_display('default');
    $view->set_arguments(array('first', 'second'));
    $view->is_cacheable = FALSE;
    $view->display['default']->handler->options['items_per_page'] = 3;
    $view->display['default']->handler->options['title'] = $title;
    $view->display['default']->handler->options['display_options']['use_pager'] = FALSE;
    ?>

     

  • 添加一个Filter,fields,sort,argument也可以这样添加:

    <?php
    $display_id
    = 'default';
    $view->set_display($display_id);
    $id = $view->add_item($display_id, 'filter', 'og_uid', 'is_admin');
    $item = $view->get_item($display_id, 'filter', $id);
    $item['value'] = array(0, 1);
    $view->set_item($display_id, 'filter', $id, $item);
    $view->is_cacheable = FALSE;
    ?>

     

  • 可以直接给exposed filter设置默认值:

    <?php
    $view
    ->exposed_input['filter_identifier'] = 'filter_value';
    ?>

     

  • 读取views的结果数组(无格式):

    <?php
    $view
    ->execute();
    foreach (
    $view->result as $result) {
      foreach (
    $view->field as $id => $field) {
          if (!empty(
    $view->field[$id]['handler'])) {
           
    $view->field[$id]['handler']->pre_render($view->result);
           
    // Do something with this unrendered result object
         
    }
        }
    }
    ?>

     

  • 在view rending之前实现一段代码

    <?php
    /**
    * Implementation of hook_views_pre_render().
    */
    function mymodule_views_pre_render(&$view) {
      if (
    $view->name == 'my_test_view') {
       
    $view = views_get_view('my_test_view', 'default');
       
    $view->execute();
        foreach (
    $view->result as $result) {
         
    $node = node_load($result->nid);
         
    // Do something with this unrendered result object,
          // like update a field using node_submit() and node_save()
       
    }
      }
    }
    ?>

     

  • 另一种方法:

    <?php
    $view
    ->render();
    foreach (
    $view->result as $result) {
     
    // Do something with this rendered result object
    }
    ?>

     

  • 使用自定义的display plugin:

    <?php
    $display_id
    = $view->add_display('my plugin');
    $result = $view->render($display_id);
    ?>

     

  • 另一种方法:

    <?php
    $view = views_get_view('my_view');
    $view->execute_display($display_id, $args);
    ?>