用好hook_views_query_alter,高度自定义view的筛选功能
来源:互联网 发布:网络外部性和规模效应 编辑:程序博客网 时间:2024/05/17 07:59
作者:yoqu
欢迎转载,但请转载的朋友把我的名字留着,毕竟大家都是幸幸苦苦总结的。
函数api地址:https://api.drupal.org/api/views/views.api.php/function/hook_views_query_alter/7
该函数作用为:在view执行query之前对query进行复写
近期工作项目需要,会用到根据用户角色来过滤一些内容。而view的设置里面不是很方便,虽然可以用FILTER CRITERIA里面直接添加php来过滤,但是效果不理想,不能达到高度自定义,由此使用到了hook_views_query_alter来自定义条件过滤内容
过滤在我了解的有两种
1.在query里面可以加入一个table进行where查询
2.新的数据表和旧的数据表关联进行where条件查询
1.使用增加一个table用where过滤
$query
->add_table(
'[表名]'
);
$query
->add_where(0,
'[表字段]'
, [和字段进行比较的值],
'[操作符]'
);
说明:
1.表名:对query增加一个数据库中的表
2.表字段:存在query中的所有字段都可以使用
3.和字段进行比较的值:要和表字段进行比较的值,这里根据业务需求来赋值
4.操作符:执行where条件用的操作符,比如like = < > in之类不再累述。
2.使用关联数据表进行内容过滤
$join
=
new
views_join;
$join
->construct(
'[添加关联的数据表]'
,
'[被关联的数据表]'
,
'[被关联的数据表的字段值]'
,
'[添加关联的数据表的字段值]'
);
$query
->add_relationship(
'[添加关联的数据表]'
,
$join
,
'[被关联的数据表]'
);
$query
->add_where(0,
'[表字段]'
, [和字段进行比较的值],
'[操作符]'
);
说明:
1.实例化join
2.设置它的construct。进行表和表之间的关联,和left join类似
(将view中已存在的数据表和新添加的进行关联)
3.调用$query的add_relationship方法,将它关联到$query中。
4.和1中的add_where用法一致,不再说
以上就是我使用到的hook_views_query_alter。如果有什么专业术语的问题,欢迎纠正错误,如果还有一些其他用法也希望大家可以一起交流交流。
- 用好hook_views_query_alter,高度自定义view的筛选功能
- 自定义View的高度
- 筛选框自定义view实现
- 用好SciTE的缩写功能
- 自定义View 实现 TextView 的功能:
- 自定义view中获取字符串的宽度和高度
- 自定义View之 onMeasure() view的高度自适应wrap_content view的测量
- Android自定义view之筛选按钮
- 用好Matlab Editor的Cell功能
- 用好文本框间的链接功能
- 用好文本框间的链接功能
- 【自定义控件】自定义View实现TextView的简单功能
- 自定义View实现擦除蒙版显示图片功能/自定义View的存储/自定义View的属性
- 带有筛选功能的Spinner
- Activity 设置Theme.Dialog自定义View高度
- 自定义View高度大于屏幕高度显示不全解决方案
- jQuery自定义的筛选选择器
- 【Android】Android开发之自定义View的功能实现详解。教你一步一步学会自定义View
- Behavior Designer中节点类型分析
- linux吐核详解——详解coredump
- 在sqlite3中查询
- UBUNTU14.04 下 安装Intel GPU OpenCL runtime
- 全向移动平台android版手机控制器——UI界面设计
- 用好hook_views_query_alter,高度自定义view的筛选功能
- 导入pods中三方库头文件没有提示的解决办法
- untiy 5.0 之后要获得材质需要先获取组件
- Dynamics CRM 2015 Update 1 系列(1): 简介
- C# 静态类(static class)
- 当TextView里写数字去除默认间距
- Python基础:22新式类
- NetBeans上Android开发环境配置
- iotop