Drupal:hook_search仅适用于内容类型

时间:2011-02-01 10:21:08

标签: drupal cck

我想在Drupal6中构建一个自定义搜索模块,用于搜索CCK;我需要用户在他的节点(node.uid = x)和某种类型(type ='xyz')之间进行搜索...我想我必须实现hook_search但我不知道在哪里放置我的过滤器。 .. 谁能帮我? 在此先感谢您的问候 C。

3 个答案:

答案 0 :(得分:2)

您已经接受了答案(这可能是您的最佳选择),但还有其他一些方法可以实现这一目标。

IIRC,Custom Search模块可以满足您的需求。

您可以将库存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。但观点 - 当然很简单。