Drupal → Добавляем к стандартному поиску функцию поиска по загруженным файлам

05.07.2010

Расширить стандартный поиск можно с помощью хука hook_search(). Ниже, пример добавления функции поиска по загруженным файлам:

/**
 * Implements hook_search().
 */
function mymodule_search($op = 'search', $keys = null) {
  if ($op == 'name') {
    return 'Загруженные файлы'; // будет отображаться вкладкой на странице поиска
  }
    
  if ($op == 'search') {
    $files = db_query("
      SELECT * FROM {files} f
      LEFT JOIN {users} u ON f.uid = u.uid
      WHERE filepath LIKE '%%%s%%'
    ", $keys);
        
    $results = array();
    while ($file = db_fetch_object($files)) {
      $results[] = array(
        'link'    => url($file->filepath),     // ссылка на файл
        'title'   => $file->filename,          // название файла
        'user'    => theme('username', $file), // кто загрузил файл
        'date'    => $file->timestamp,         // дата загрузки файла
        'snippet' => '
          Размер: ' . format_size($file->filesize) . '<br />
          Статус: ' . ($file->status ? 'постоянный' : 'временный') . '<br />
        ',                                     // дополнительная информация о файле
      );
    }

    return $results;
  }
}

Расширенная форма поиска:

Результаты поиска по загруженным файлам:

Написанное актуально для
Drupal 6
Похожие записи

Комментарии

Приветствую! У меня есть тип материала "Заявка", у него есть CCK поле "Номер заявки" (тип serial, т.е. автоинкрементное). Пытался найти модуль для поиска по CCK полю, но ничего путного не нашел.
Хочу написать маленький модуль в виде поиска. Можно ли будет воспользоваться хуком поиска в своем модуле?
Спасибо

реализовывать хуки нужно именно в своих модулях, больше нигде это сделать невозможно

Привет, полезный сайт!
Как бы ты реализовал поиск по пользовательским полям CCK? Если у тебя есть опыт в этом, что бы ты посоветовал?

А точнее - exposed filters. Благодарю за наводку, думал, придётся использовать hook_alter_form + кучу кода

А как с помощью этого хука можно наоборот не расширить а ограничить стандартный поиск например по определенным типам материалов... а ещё как если возможно по определенным полям некоторых материалов?

Дмитрий
04.04.2012, 18:36

Здравствуйте, спасибо большое за полезный материал.
Подскажите, пожалуйста, как заменить друпаловский поиск по умолчанию своим или сделать его приоритетным поиском, надеюсь понятно объяснил :)
заранее спасибо :)

Добавить комментарий