转自: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);
?>