资料

30
Oct
2020
BlueSnow

Ubuntu 16.04 APT 源

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted

Source: 
Datum: 
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: 

Pages