xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Расширить стандартный поиск можно с помощью хука 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
Похожие записи

Комментарии RSS

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

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

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

Views

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

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

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании