Views

04
Mar
2016
BlueSnow

通过对Views的模板的覆写达到定制输出

看到群里有人再问有关views模板覆写的问题,那我就分享一个我对views模板覆写的理解,希望能达到抛砖引玉的效果。

比如我打算实现这样的一个区块,如下图:

a.png

1.首先创建一个Views的block,例如我命名为latest_news.在格式里选择“无格式化的列表(unformatted list)”,可以对HTML更好的定制输出。

b.png

并点击“格式”右侧的“设置”进行如下图的设置,取消勾选后,应用保存,这样可以更好的去除views模板添加的HTML元素。

c.png

Source: 
Datum_Free: 
04
Mar
2016
BlueSnow

使用 hook_views_query_alter 修改 views 的sql语句

目标:输出一个表格,能够按照日期统计用户发表“文章的篇数”,要求列出所有用户名(包括发表数为0的用户)

53s0fd2gi11y0o2u1lsk8i.jpg思路:

第一步,创建基于用户{user}表的views;关联 {node}表;字段:用户名,(发表文章的)nid ,并对nid使用COUNT(DISTINCT)聚合计算篇数;filter node.created 并且exposed。

Source: 
Datum_Free: 
04
Mar
2016
BlueSnow

如何创建一个日期提醒Views

客户管理系统中一般都有客户生日提醒功能,最简单的方式就是每天显示当天或几天后将要过生日的客户信息,根据这个信息再发短信或打电话联络客户。这个简单的功能应该怎么做呢?在群里问过,没人应答,下面是我自己摸索的办法。

创建新的内容类型:姓名、生日、住址、生日日期,其中“生日”为日期型,“生日日期”为字符型,并且值为date('m-d',生日)。

创建Views如下:

custom-views-1.png

将“生日日期”作为一个contextual filters,设置如下图

Source: 
Datum_Free: 
04
Mar
2016
BlueSnow

用好hook_views_query_alter,高度自定义view的筛选功能

欢迎转载,但请转载的朋友把我的名字留着,毕竟大家都是幸幸苦苦总结的。
函数api地址:https://api.drupal.org/api/views/views.api.php/function/hook_views_query...
 该函数作用为:在view执行query之前对query进行复写

使用场景:近期工作项目需要,会用到根据用户角色来过滤一些内容。而 view的设置里面不是很方便,虽然可以用FILTER CRITERIA里面直接添加php来过滤,但是效果不理想,不能达到高度自定义,由此使用到了hook_views_query_alter来自定义条 件过滤内容(获取想要的内容)
过滤在我了解的有两种
1.在query里面可以加入一个table进行where查询
2.新的数据表和旧的数据表关联进行where条件查询

Source: 
Datum_Free: 
04
Mar
2016
BlueSnow

Drupal 7 views php模块不显示分页处理

修改/views_php/plugins/views/views_php_plugin_pager.inc文件,去除红色部分,加上绿色部分即可

 

class views_php_plugin_pager extends views_php_plugin_wrapper  {

   /**

    * Perform any needed actions just prior to the query executing.

    */

-  public function pre_execute($query) {

+  public function pre_execute(&$query) {

     $this->wrapped->pre_execute($query);

 

     foreach (array(/*'argument',*/ 'field', 'filter', 'sort', /*'relationship'*/) as $type) {

Source: 
Datum_Free: 
21
Oct
2015
BlueSnow

【Drupal】如何创建一个日期提醒Views

客户管理系统中一般都有客户生日提醒功能,最简单的方式就是每天显示当天或几天后将要过生日的客户信息,根据这个信息再发短信或打电话联络客户。这个简单的功能应该怎么做呢?在群里问过,没人应答,下面是我自己摸索的办法。

创建新的内容类型:姓名、生日、住址、生日日期,其中“生日”为日期型,“生日日期”为字符型,并且值为date('m-d',生日)。

创建Views如下:

custom-views-1.png

将“生日日期”作为一个contextual filters,设置如下图

Source: 
Datum_Free: 
02
Jul
2014
BlueSnow

【Drupal】views模块hook执行顺序

views_object
  views_handler
    views_handler_area
     views_handler_area_broken
     views_handler_area_result
     views_handler_area_text
     views_handler_area_view
    views_handler_argument
     views_handler_argument_broken
     views_handler_argument_comment_user_uid
     views_handler_argument_formula
     views_handler_argument_group_by_numeric
     views_handler_argument_locale_group
     views_handler_argument_locale_language
Source: 
Datum_Free: 
28
Nov
2011
BlueSnow

【Drupal】如何开发views插件

当你想让自已写的模块或是第三方模块中的字段在views中显示的时候,就要考虑到views插件的开发了。查遍了中文资料,没有找到关于views插件开发的介绍,大都停留在views的应用上。在drupal的高级帮助文档上获得了相关信息,不敢独占,特分享如下。

views模块中有二个关键术语,handlers和plugins,这里暂且译为控制器和插件。

关于handler.

所谓的handler,是views对象的一部分,它参与query也就是sql语句的生成。Handlers本身也是一个对象,它有二大独立的代码流:UI flow and view building flow.
query流中,主要有以下几个方法:

Source: 
Datum_Free: 

Pages

Subscribe to RSS - Views