ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 如何覆盖drupal view pager查询?

2019-06-26 10:26:49  阅读:269  来源: 互联网

标签:php drupal-6 drupal-modules drupal-views views2


我正在使用drupal 6并查看2 –

我使用此文档为我的视图创建了一个自定义过滤器

http://www.chadcf.com/blog/creating-custom-filters-drupal-and-views.

每件事似乎只能解决一个问题 –

我的分页不起作用(不与某些操作符一起出现)

让我解释一下我想要简要介绍的内容 –

在我的页面视图中,我已经有一些带有运算符下拉列表的暴露过滤器,我创建了一个自定义暴露过滤器而没有运算符下拉.

我的要求是将一个现有的过滤器功能与我的自定义过滤器合并.意味着两个过滤器将一起工作以获得所需的结果.但是一个过滤器由现有字段组成,如果我从下拉列表中选择任何一个操作符,则它的值包含在where子句中,这是我不想要的.所以我通过使用完全从视图查询中删除了一大块查询

hook_views_pre_execute(&$view) {
        $view->build_info['query'] = preg_replace('/AND \(node_data_field_stock.field_stock_value [<<=>>=!=\\s%d|IS NULL|IS NOT NULL]*\)/','',$view->build_info['query']);
      } 

现在在我的
网站/所有/模块/ mymodule中/ INC / mymodule_filter.inc

function query() {
        $this->query->add_where($this->options['group'], "MY_QUERY");   
}

添加where子句来查看查询.

使用上面的过程我成功地扩展了默认的视图行为,并获得了所需的结果,但是对于某些运算符分页链接没有出现,即使我知道数据库中存在更多的记录.

我知道为什么会这样 – 因为我的视图分页脚本不知道我所做的改变.

我的问题是如何覆盖查看PAGER QUERY?

任何帮助将不胜感激.

解决方法:

我正在做什么来从视图查询中删除where子句如下.

hook_views_pre_execute(&$view) {
           $view->build_info['query'] = preg_replace('/AND \(node_data_field_stock.field_stock_value [<<=>>=!=\\s%d|IS NULL|IS NOT NULL]*\)/','',$view->build_info['query']);
    } 

但是删除要从视图查询中删除的where子句的适当位置是hook_views_query_alter().通过使用本教程

http://www.drupaler.co.uk/blog/altering-views-query-tackling-node-type-filter-bug/451

    function hook_views_query_alter(&$view, &$query) {
        if($view->name == 'view_name'){
            var_dump($query->where[0]['clauses']);
                 foreach ($query->where[0]['clauses'] as $key=>$value) {
                    if(preg_match('/node_data_field_stock.field_stock_value/',$value)){
                        unset($query->where[0]['clauses'][$key]);
                       // remove the where clause by it's key
                    }
                 }

            var_dump($query->where[0]['clauses']);
        }
    }

标签:php,drupal-6,drupal-modules,drupal-views,views2
来源: https://codeday.me/bug/20190626/1293073.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有