Sto cercando di sostituire la ricerca predefinita con una clausola LIKE in Drupal 7. Ho provato a modificare la query in base all'aggiunta di una condizione OR a una query esistente :
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 ricerca con la parola "dichiarazione" mostra gli stessi risultati della ricerca drupal predefinita, ma la ricerca con "decl" non trova alcun risultato.
Qualche idea sul perché il mio codice non funziona?