Views - Recherche sans résultat

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 suis en phase finale de mon projet, et tous les petits détails qui me manquent me posent problème.

Je suis toujours avec le module Views. J'ai créé une view pour faire une recherche.

Ce que je souhaite est assez simple, mais est-ce facile à réaliser ? Mystère.

Voici mes problèmes :

  • j'aimerai que lorsque ma recherche ne renvoie aucun résultat, j'ai un message disant "Aucun résultat trouvé".
  • Et parce que je galère depuis un moment avec tout ça, j'aimerai également que si l'utilisateur est un anonyme ou un inscrit mais pas un premium (géré avec le module premium), il y ait un message stipulant qu'il faut être membre premium pour effectuer une recherche (ou juste "vous n'avez pas accès à cette page").

=> L'idéal serait de dire : je vais dans ma view, je clique sur Access Control, et je mets "restricted for non premium users". Mais ça ... Pas trouvé :(

Si vous pouviez m'aider pour que je finisse ce projet, je vous en serai trèèèèèès reconnaissante :D

Etonnant :

  • Message si pas de résultat, cf. "empty text" (ou la traduction française) dans les items situés sur la droite.
  • Accès restreint, cf. "Access", pas loin de empty text. Mais il ne faut pas mettre les droits d'accès "view all views" à personne.

edit : inutile de poser plusieurs fois la même question...

Aaaaaaaah merci beaucoup pour la seconde réponse ! :D

Pour la première, j'avais bien vu le "empty text", le problème étant que ça m'affiche mon texte même quand j'arrive sur la page pour la première fois et que je n'ai pas encore effectué de recherche =S

EDIT : dans ce post c'était surtout pour le message de recherche, mais j'ai reposé mon autre question d'une autre manière parce que peut-être que ça allait + parler à quelqu'un, et c'est le cas ...

Ok.

Pour ton pb, il est un plus compliqué : je l'ai déjà eu. Un moyen de s'en sortir est de mettre un empty text en PHP. Quand on réalise une recherche, il y a des paramètres qui sont envoyés dans l'URL ?recherche=ma-recherche.

La solution est donc d'avoir un petit code du genre :

<?php
if ($_GET['recherche']) print 'Aucun résultat';
?>

Ainsi, il ne t'affiche qu'à partir du moment où tu as réalisé au moins une recherche...

Non : regarde la clé spécifique à ton champ. Fais une recherche avec ta vue et regarde l'URL que cela génère.

Ensuite met mon code mais change la clé ('recherche' s'appelle peut-être search ou key, ou autre...).

J'ai bien mis le filtre PHP, j'ai codé "PHP code" dans format d'entrée et j'ai écris :

<?php
if ($_GET['synthese']) print 'Aucun résultat';
?>

dans la textarea.

Ne faut-il pas rajouter quelque chose après le $_GET ?

Merci en tout cas pour l'aide :)

Non, tu peux mettre "<>''" si ça te rassure, mais ça ne change rien.

Met un print $_GET['synthese'] pour voir s'il le reconnaît bien et vérfifie dans ton url que la variable est bien présente (synthese=qqchose).

Je vois. Tu n'as pas bien compris le système d'arguments.

Synthèse est le nom de ton URL, pas des critère de recherche. L'objectif est de ne pas afficher ton empty texte si il n'y a pas eu au moins une requête. Ce qui est intéressant, c'est ce qui se passe après le ?.

Dans ton cas, ça donne un truc du genre

<?php
if ($_GET['ville'] or $_GET['categorie'] or $_GET['field_region_h_value_many_to_one']) print 'Aucun résultat';
?>

L'empty text s'applique donc dès que la recherche a au moins 1 paramètre.