Drupal: hook_search только для типа контента - PullRequest
2 голосов
/ 01 февраля 2011

Я хотел бы создать собственный модуль поиска в Drupal6 для поиска через CCK; Мне нужно, чтобы пользователь осуществлял поиск между его узлами (node.uid = x) и определенного типа (type = 'xyz') ... Я думаю, что мне нужно реализовать hook_search, но я не знаю, куда поместить мои фильтры. .. Может кто-нибудь мне помочь? Заранее благодарю и приветствую с.

Ответы [ 3 ]

2 голосов
/ 01 февраля 2011

Вы уже приняли ответ (что, вероятно, является лучшим вариантом для вас), но есть несколько других способов сделать это.

IIRC, модуль Custom Search будет работать для того, что вы хотите.

Вы можете скопировать функцию stock 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. В последнее время я использовал этот метод, а не пользовательский поиск, потому что он проще с точки зрения пользователя.

НТН

1 голос
/ 01 февраля 2011

Вы можете попробовать создать Представления с открытым фильтром, это самый простой способ реализовать вашу идею.

0 голосов
/ 01 февраля 2011

Также вы можете попробовать использовать CCK Facets .Но представления - конечно, просты.

...