Поиск в Drupal по части слова
1. Находим файл search.module.
1) находим строку:
$query2 = substr(str_repeat("i.word = '%s' OR ", count($arguments2)), 0, -4);
и изменяем ее на:
$query2 = substr(str_repeat("i.word LIKE '%%%s%%' OR ", count($arguments2)), 0, -4);
2) затем строку:
$boundary = '(?:(?<=['. PREG_CLASS_SEARCH_EXCLUDE . PREG_CLASS_CJK .'])|(?=['. PREG_CLASS_SEARCH_EXCLUDE . PREG_CLASS_CJK .']))';
исправить на
$boundary = '';
3) дальше нужно найти
if (count($ranges) == 0) {
return truncate_utf8($text, 256) .' ...';
}
и привести к виду
if (count($ranges) == 0) {
return "bad";
}
больше никаких изменений в даном файле делать не нужно.
2. Нужно найти файл node.module.
1) находим строку:
$extra = node_invoke_nodeapi($node, 'search result');
и после нее добавляем
$snip=search_excerpt($keys, $node->title.$node->body);
if($snip!="bad")
{
2) строчку
'snippet' => search_excerpt($keys, $node->body),
изменяем на
'snippet' => $snip,
3) осталось только добавить
}
перед строкой
return $results;