该站点使用Drupal 7.26最小安装构建。
我正在尝试在视图中使用Global:Combine Fields Filter在多个字段中查询在创建的表单中输入的相同值。
我注意到使用全局:组合字段过滤器时存在不同的运算符,而不是我可以设置的其他过滤器。
具体来说,似乎没有'介于'运算符之间提供一系列值来搜索。
任何人都可以验证是否是这种情况,如果没有,为什么它无法显示'介于'运算符?
答案 0 :(得分:1)
很抱歉,对您来说可能会迟到,但我会为搜索解决方案的人解答此问题。
首先,您必须创建自定义模块。
在mymodule.module
文件中:
<?php
/**
* Implements hook_views_api()
*/
function custom_views_filter_views_api() {
return array(
'api' => 3,
'path' => drupal_get_path('module', 'MYMODULE'),
);
}
然后你必须创建一个mymodule.views.inc
文件。在这个文件中,我使用了以下钩子:hook_views_query_alter()
/**
* Implements hook_views_query_alter(&$view, &$query)
*/
function MYMODULE_views_query_alter(&$view, &$query) {
if ( $view->name == 'MYVIEWNAME' && $view->current_display == 'MYVIEWDISPLAY' ) {
$conditions = &$query->where[1]['conditions'];
foreach($conditions as $k => $q) {
if( $q['operator'] == 'formula' && preg_match('/SOME-STRING/', $q['field']) ) {
//the preg_match here is just to be sure I'm altering the right WHERE condition so I can use the Global filter again in this display if needed.
$conditions[$k]['field'] = ":views_combine BETWEEN field_data_field_NAME1.field_NAME1_value AND field_data_field_NAME2.field_NAME2_value";
//original "field": "CONCAT_WS(' ', field_data_field_NAME1.field_NAME1_value, ' ', field_data_field_NAME2.field_NAME2_value) LIKE :views_combine"
}
}
//you can delete your "variable by reference"
unset($conditions);
}
}
幸运的是,它有效! :-)。只是说我的数值在哪里。所以要测试其他类型的值。
希望它有所帮助。