我想在Drupal6中构建一个自定义搜索模块,用于搜索CCK;我需要用户在他的节点(node.uid = x)和某种类型(type ='xyz')之间进行搜索...我想我必须实现hook_search但我不知道在哪里放置我的过滤器。 .. 谁能帮我? 在此先感谢您的问候 C。
答案 0 :(得分:2)
您已经接受了答案(这可能是您的最佳选择),但还有其他一些方法可以实现这一目标。
您可以将库存hook_search
功能复制到自定义模块并修改查询。你可以这样做:
// ...
case 'search':
// Build matching conditions
list($join1, $where1) = _db_rewrite_sql();
$arguments1 = array();
$conditions1 = 'n.status = 1';
// NEW BIT START
$allowed = array(
'content_type_1',
'content_type_2',
'content_type_3',
);
$types = array();
foreach ($allowed as $t) {
$types[] = "n.type = '%s'";
$arguments1[] = $t;
}
$conditions1 .= ' AND ('. implode(' OR ', $types) .')';
$keys = search_query_insert($keys, 'type');
// NEW BIT END
这将替换从实际查询字符串中提取类型的位。
您必须添加该位才能重新调整为特定n.uid
。我最近一直在使用这种方法,而不是自定义搜索,因为从用户的角度来看它更简单。
HTH
答案 1 :(得分:1)
您可以尝试使用公开的过滤器创建Views,这是实现您的想法的最简单方法。
答案 2 :(得分:0)
您也可以尝试使用CCK Facets。但观点 - 当然很简单。