menu

view的一个重量级api views_get_view

格式:views_get_view($name, $reset = FALSE)(适合drupal 6和7版本)
作用:从数据库或者默认的views得到一个view
说明:$name 是view的名称.$reset若设为真, 在负载缓存内复位此项。当你确定你需要一个新的view时,才使用这个参数。
使用:这里假设创建了一个viewtest的viewtest
1,用代码输出views
<?php
$views=views_get_view(“viewtest”);
$views->preview();
$results=$views->result;
//下面的代码与views无关的
print_r($results);
复制代码
2,传入argument。
<?php
$views=views_get_view(“viewtest”);
$views->set_arguments(array(3));
$views->preview();
$results=$views->result;
print_r($results);
?>
复制代码
3,控制输出的结果数
目前我们的结果都是只输出10个结果,我现在想输出50个结果。
对比例子一:只增加了两行
<?php
$views=views_get_view(“viewtest”);
$views->set_display(‘default’);
$views->display_handler->set_option(‘items_per_page’, 50);
$views->preview();
$results=$views->result;
print_r($results);
?>
复制代码
4,输出views的HTML
print $views->preview();
5,控制是否分页
$views->display_handler->set_option(‘use_pager’,1);
当为0时则不分页
6,控制当前显示在views的第三页而不是默认的第一页结果]
$views=views_get_view(“viewtest”);
//$views->args=array(1);
$views->pager["use_pager"]=1;//要分页
$views->pager["items_per_page"]=40;//每页40个
$views->pager["current_page"]=3;//定位到第3页
$views->execute();//执行
print_r($views->result);
复制代码
上面的几个例子用的是preview方法,而这里用的是execute方法,这完全是views的设计者设计出来的。当然,你可以都改为这个例子的设定,但就我发现,在大规模测试的时候,我发现execute的性能比preview要差一点点(并不明显).
转载:http://bbs.zzbaike.com/thread-35939-1-1.html
编辑