【发布时间】:2014-10-01 13:06:26
【问题描述】:
我正在尝试使用 SQL 查询进行搜索,我需要使用用户输入搜索两个不同的东西“title”和“title_alt”,我想我可以使用 OR 来做到这一点,但是我需要能够调整查询填充过滤器时。这是我使用 Drupal 的第一天,我仍在掌握 SQL。
我知道我可以使用explode 和str replace,但我应该添加一个钩子吗?如何测试过滤器中的值?
【问题讨论】:
我正在尝试使用 SQL 查询进行搜索,我需要使用用户输入搜索两个不同的东西“title”和“title_alt”,我想我可以使用 OR 来做到这一点,但是我需要能够调整查询填充过滤器时。这是我使用 Drupal 的第一天,我仍在掌握 SQL。
我知道我可以使用explode 和str replace,但我应该添加一个钩子吗?如何测试过滤器中的值?
【问题讨论】:
你应该创建一个自定义模块,然后实现 hook_views_query_alter()。
这是一个非常快的 sn-p,根据您的需要进行调整
/**
* Implements hook_views_query_alter().
*/
function mymodule_views_query_alter(&$view, &$query) {
if ($view->name == 'view_machine_name') {
if (isset($view->args[0]) && is_numeric(($view->args[0]))) {
$query->add_where(0, 'users.uid', 1, '>');
$query->where[0]['type'] = 'OR';
}
}
}
【讨论】: