Estoy tratando de reemplazar la búsqueda predeterminada con una cláusula LIKE en Drupal 7. Intenté alterar la consulta de acuerdo con Agregar una condición OR a una consulta existente :
function MYMODULE_query_node_access_alter(QueryAlterableInterface $query) {
foreach ($query->getTables() as $table) {
// LIKE for search results.
if ($table['table'] == 'search_index') {
// Get the query args and then the search term
$args =& $query->getArguments();
$search = $args[':db_condition_placeholder_1'];
// Get a reference to the existing query conditions.
$conditions =& $query->conditions();
// Save the former conditions
$former_conditions = $conditions;
// Reset the condition array. It needs a default #conjunction for which AND is fine
$conditions = array('#conjunction' => array_shift($former_conditions));
// Replace the search condition in the query
foreach ($former_conditions as $key => $condition) {
if ($key != 1) {
$query->condition($condition['field'], $condition['value'], $condition['operator']);
}
else {
$query->condition('i.word', '%' . db_like($search) . '%', 'LIKE');
}
}
}
}
}
La búsqueda con la palabra "declaración" muestra los mismos resultados que la búsqueda predeterminada de drupal, pero la búsqueda con "rechazo" no encuentra ningún resultado.
¿Alguna idea de por qué mi código no funciona?