Это заняло гораздо больше времени, чем следовало, но я наконец-то понял, как это сделать. Позже я могу выпустить модуль на сайте Drupal, но в случае, если у кого-то еще возникнет такая же проблема, я решил эту проблему.
Создайте модуль и используйте hook_form_alter () для изменения формы. У меня уже был модуль, который я использовал для настройки расширенного поиска, поэтому я поместил его туда. Я не буду вдаваться в детали создания вашего собственного модуля - вы можете найти простое руководство для этого, и вам нужно только определить эту функцию.
/**
* Implementation of hook_form_alter().
* Remove 'category:x,y,z' from the keyword textbox and select them in the taxonomy terms list
*/
function modulename_form_alter(&$form, $form_state, $form_id) {
// Advanced node search form
if ($form_id == 'search_form' && $form['module']['#value'] == 'node' && user_access('use advanced search')) {
// Remove category:x,y,z from the keyword box
$searchPhrase = $form['basic']['inline']['keys']['#default_value'];
if(!empty($searchPhrase) && strpos($searchPhrase, 'category:') !== false) {
$searchWords = explode(' ', $form['basic']['inline']['keys']['#default_value']);
foreach($searchWords as $index=>$word) {
if(strpos($word, 'category:') === 0) {
// Use the value to set the default on the taxonomy search
$word = substr($word, strlen('category:'));
$form['advanced']['category']['#default_value'] = explode(',', $word);
// Remove it from the keyword textbox
unset($searchWords[$index]);
}
}
// Re-set the default value for the text box without the category: part
$form['basic']['inline']['keys']['#default_value'] = implode(' ', $searchWords);
}
}
}