webleads-tracker

Utiliser des liens pour appeler ou filtrer des fiches d'un annuaire

Pascal Derathé
Bonjour,
avec Thomas Hesse , nous avons un peu séché ce matin sur un problème qui appelle de la rigueur, donc j'ai tenu à vous en faire part pour vous éviter de répéter nos tracas


Problématique de départ:
Des offres d'emploi sont gérées avec un annuaire sous forme de fiches.
Il existe 4 famille d'offres d'emploi. Je souhaitais afficher sur une page toutes les offres d'une même famille et ce à partir de 4 boutons différents.



Principe
1°) Il faut mettre en place une boite de recherche sur l'annuaire (voir Boite d'outils V0.1x ou Mon site/Widgets/Modules V1.0)
Il faut indiquer la ou les rubrique(s) où va s'afficher cette boite de recherche: "page_de_destination_de_l_affichage" (cela correspond à la page où les résultats du filtre vont s'afficher)
Dans la partie "type de publication" (V0.1x) il faut préciser un identifiant: "identifiantboiterecherche" (idem V1.0) (sans caractères spéciaux ni mots trop signifiant du genre "recherche"). Cet identifiant va être utilisé dans syntaxe du filtre.
Note: les textes en bleu sont des exemples, vous les adapterez à votre configuration

2°) La page appelante avec les 4 boutons
Pour faire joli je suis passé en html afin de pouvoir contextualiser mes boutons
Le principe de faire un lien du type

<a href="/page_de_destination_de_l_affichage/
identifiantboiterecherche-search-type=X-field_Y=%22FILTRE%22.html" 
class="classe_du_bouton"><span>texte qui sera supprimé en CSS</span></a>


NOTE : "%22" est le caractère "guillemet" si on tape directement le caractere " " "ça ne fonctionne pas

    ou X est égal au n° de la catégorie de l'annuaire utilisé (ça se retrouve dans la configuration de l'annuaire en regardant l'editeur de template qui affiche "directory_entry_summary_X.html" ou "directory_entry_detail_X.html"

    où Y est égal au n° du champ de l'annuaire sur lequel porte la requête (on retrouve ce n° das l'éditeur de template de la catégorie de l'annuaire)

    où FILTRE correspond à la valeur du champ que vous souhaitez filtrer (attention à bien recopier ce qui se trouve dans le champ)
Artisan du web à Saint-Genis Laval (près de Lyon)

Vincent StartUp
Avatar
Afin de compléter la doc et éviter de longue recherche à d'autres, voici un extrait de la réponse de Jérémie dans le topic http://communaute.medialibs.com/forum/topic-261.html :

Dans la recherche avancée sur l'annuaire, il est possible de définir la famille dans laquelle chercher.
Le moteur de recherche sur l'annuaire permet de plus de passer certains paramètre dans l'url d'appel. On peut ainsi prédéfinir les éléments suivants :

* Une catégorie dans laquelle chercher
* Un type de fiche
* Une phrase de recherche

La syntaxe à utiliser doit être la suivante :

Pour définir une catégorie :
/{identifiant de la boite}-search-category={identifiant de la catégorie}
Pour définir un type de fiche :
/{identifiant de la boite}-search-type={identifiant du type de fiche}
Pour définir une phrase de recherche :
/{identifiant de la boite}-search-string={expression recherchée}

Vous avez la possibilité de cumuler ces syntaxes. Par exemple :
/{identifiant de la boite}-search-category={identifiant de la catégorie}-string={expression recherchée}
Vincent - StartUp Communication

pderathe
Avatar
Merci Vincent

J'aime bien voir mon topic d'avril 2008, remis au goût du jour avec les évolutions d'Emajine.
Il fallait le faire. Merci
Artisan du Web en Rhône-Alpes

Ludovic
Bonjour bonjour,

Petite question sur le moteur de recherche de l'annuaire et la construction de requête via une URL.
J'ai besoin de faire une requête qui va taper dans deux fields de fiche.
En gros pour faire concret j'ai besoin de récupérer les fiches qui ont pour le champ X la valeur VX et pour le champ Y la valeur VY :
J'ai donc essayé tout un tas de chose mais sans succès :
http://URL/{identifiants-boite}-search-type=1-field_X=%22VX%22-field_Y=%22VY%22
Je n'ai jamais réussi à faire fonctionner la syntaxe avec field même avec un seul field.

J'ai aussi essayé d'utiliser "-string=%22VX%22+string=%22VY%22 pour faire une recherche à la fois sur VX et VY mais là je veux pas soit l'un ou l'autre mais bien l'un et l'autre.
Je pense que c'est juste une histoire de syntaxe mais là j'avoue que je colle sur ce pbm depuis pas mal de temps.

Comment utiliser les opérateurs logique (et /ou) pour l'expression recherchée ?
/{identifiant de la boite}-search-string={expression recherchée}

Comment utiliser la syntaxe avec field ?

Merci de votre aide

Vincent StartUp
Avatar
Salut Ludovic,

Pour la 1ere méthode avec search-type, je fais la même chose sauf que les valeurs vx et vy je les urlencode via un script php.

Bon courage,


Vincent - StartUp Communication

Ludovic
Salut Vincent,

Et après ton urlencode cela fonctionne avec les field_X=VX-filed_Y=VY ?
Ou est ce que tu envoie en PHP les valeurs en POST à ta page de recherche comme si cela venait du moteur ?
As tu un exemple même fictif d'une URL qui fonctionne car je pense que j'ai un souci de syntaxe ?

Merci de ton aide

Vincent StartUp
Avatar
C'est pour du spécifique, la page en question ne renvoie que le contenu du widget :
maisons-rennaises.startup35.atester.fr/export-agence/rechexport-search-type=1-field_7=%22Les+maisons+malouines%22-field_1=%22Ambon%22.html

Bon courage
Vincent - StartUp Communication

Ludovic
Merci beaucoup Vincent pour ta réponse très claire et qui fonctionne sans souci.
J'ai une dernière question parmi mes champs de recherches je vais taper dans un filed "département" ou l'on trouve le nom du département et non le numéro du département. Du coup, quand je recherche dans tarn il va aussi dans tarn-et-garonne et inversement.
Connais tu la syntaxe pour les expressions exactes ? car j'ai essayé pas mal de choses sans succès.

Merci encore pour ton aide précieuse

Vincent StartUp
Avatar
Non, désolé.
Vincent - StartUp Communication

Laurent
Bonjour,

Question sur le moteur de recherche :
Nous avons besoin de faire une recherche sur une tranche et non sur une valeur absolu.
Par exemple sur une annuaire de Gîte, il faudrait sortir les fiches dont la valeur du champ tarif Y est comprise entre les valeurs X et Z.

Apparemment il n'est possible de tester que sur une valeur absolu.
Existe t-il une solution pour tester un intervalle ?

Merci

pderathe
Avatar
Ben la seule que je vois ... c'est de créer un champs qui corresponde à tes tranches et de requeter dessus. C'est "bourrin" mais c'est simple !
Artisan du Web en Rhône-Alpes

Laurent
Merci pour ce retour !

Nous avons pensé à cette solution.
Mais les fiches provenant d'une base externe via des webservices nous ne pourrons pas utiliser cette technique à tous les coups, n'ayant pas la main sur les champs.

Donc si quelqu'un a une idée, je suis preneur !


Jean-philippe
Bonjour à tous,

pour enrichir ce sujet, j'aimerais pouvoir passer en URL un filtre qui me remonterait des fiches selon une périodicité.

La fiche contient un champ de type "date" et j'aimerais pouvoir afficher par URL toutes les fiches du 01/01/2011 au 04/01/2011 (par exemple),

est-possible ?

Merci,

JP

Maxime Mérian
Bonjour à tous,

J'apporte juste une précision sur ce sujet, concernant le terme recherché. Si celui-ci contient un tiret (ex : /rechexport-search-type=1-field_7=%22Les+maisons+malouines%22-field_1=%22Ambon-test%22.html), il faut remplacer le tiret dans le terme recherché par ~minus~. L'URL de recherche devient alors /rechexport-search-type=1-field_7=%22Les+maisons+malouines%22-field_1=%22Ambon~minus~test%22.html

--
Maxime

Laurent
Bonjour,

J'aimerais également définir l'ordre de tri dans l'url.

Est-ce possible ?
Si oui, quel est le paramètre ?

Merci

Romain
Avatar
Bonjour,

A-t-on la possibilité en utilisant cette méthode d'ajouter des opérateurs logiques ET/OU à savoir filtrer par exemple toutes les fiches d'une catégorie où un certain champ est égal à une première chaine OU à une seconde chaine... OU / ET...
Peut-on également exclure une chaine ? que tel champ ne soit pas égal à une chaine de caractère...
Merci pour ces informations.
Romain