Расширить стандартный поиск можно с помощью хука 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? Если у тебя есть опыт в этом, что бы ты посоветовал?
Views
А точнее - exposed filters. Благодарю за наводку, думал, придётся использовать hook_alter_form + кучу кода
А как с помощью этого хука можно наоборот не расширить а ограничить стандартный поиск например по определенным типам материалов... а ещё как если возможно по определенным полям некоторых материалов?
c помощью этого хука никак
http://drupal.org/project/search_config
http://drupal.org/project/custom_search
Здравствуйте, спасибо большое за полезный материал.
Подскажите, пожалуйста, как заменить друпаловский поиск по умолчанию своим или сделать его приоритетным поиском, надеюсь понятно объяснил :)
заранее спасибо :)
Добавить комментарий