Rechercher dans plusieurs champs CCK avec un champ nodereference autocomplete

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je possède un champ "nodereference" d'un type de contenu "personnalité" avec lequel j'utilise une vue "liste_personnalite" afin de pouvoir personnaliser le tri/affichage.

J'ai réussi il y a peu de temps à modifier la requête de la vue afin de pouvoir chercher à la fois le nom ou le prenom d'une personnalité avec un code ressemblant à ça :

<?php
function mymodule_views_query_alter(&$view, &$query) {

    if (
$view->name == 'my_custom_view' && $view->current_display == 'content_references_1') {

       
// Remove the original title constraint
       
unset($query->where[0]['clauses'][2]);

       
// Duplicate the argument (keyword to search for), so
        // it is passed to both the title and the other field
       
$query->where[0]['args'][] = $query->where[0]['args'][1];

       
// Add the custom where clause
       
$view->query->add_where(0, "(node.title LIKE '%%%s%%' OR node_data_field_perso_prenom.field_perso_prenom_value LIKE '%%%s%%')");

    }

}
?>

L'autocomplétion fonctionne donc très bien, cependant, lors de l'enregistrement du noeud, j'ai le message d'erreur suivant :
"Personnalité : ce contenu ne peut être référencé."

Je ne vois pas vraiment d'où peut venir le problème car la requête fonctionne bien...

Merci d'avance pour votre aide

Forum : 
Version de Drupal : 

Car au moment de la validation il va vérifier que l'élément fait bien partie de la vue, et il semblerait que ton query_alter (qui entre nous n'est pas trop recommandé) n'est pas réappelé.

Met à jour ta version de Views pour D6 (Views 3) qui gère les "OR", ce sera plus simple...