Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
14/03/2017, 17:34:18
(Modification du message : 14/03/2017, 17:49:51 par alas.)
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.6
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour à tous,
J'ai une petite question concernant le module LISE, est'il possible d'effectuer une recherche exclusivement dans le titre de l'item plutôt que dans l'ensemble des champs ajouté dans mon module ?
J'utlise la balise suivante :
Code : {LISEFormation action="search" template_search="form_recherche_asf" template_summary="searchresults" }
Je pense que deux solutions peuvent s'offrir :
Soit effectuer la recherche exclusivement dans le champ title
Soit n'afficher que les résultats dont le champ {$item->title} contient le mot clé taper.
Dans ma template searchresult j'ai le code suivant :
Code : [== Indéfini ==]
{if !empty($actionparams.search)}
<h2>{$mod->ModLang('searchresultsfor')} "{$actionparams.search}"</h2>
{/if}
<ul>
{foreach from=$items item=item}
<li class="item searchresult">
<a href="{$item->url}">{$item->title}</a>
</li>
{/foreach}
</ul>
Je pense que le {$actionparams.search} est le mot clé tapé, donc comment dire en smarty si {$item->title} contient la chaine de caractère {$actionparams.search} alors j'affiche le résultat.
Merci pour vos conseils.
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
14/03/2017, 17:34:18
(Modification du message : 14/03/2017, 17:49:51 par alas.)
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.6
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour à tous,
J'ai une petite question concernant le module LISE, est'il possible d'effectuer une recherche exclusivement dans le titre de l'item plutôt que dans l'ensemble des champs ajouté dans mon module ?
J'utlise la balise suivante :
Code : {LISEFormation action="search" template_search="form_recherche_asf" template_summary="searchresults" }
Je pense que deux solutions peuvent s'offrir :
Soit effectuer la recherche exclusivement dans le champ title
Soit n'afficher que les résultats dont le champ {$item->title} contient le mot clé taper.
Dans ma template searchresult j'ai le code suivant :
Code : [== Indéfini ==]
{if !empty($actionparams.search)}
<h2>{$mod->ModLang('searchresultsfor')} "{$actionparams.search}"</h2>
{/if}
<ul>
{foreach from=$items item=item}
<li class="item searchresult">
<a href="{$item->url}">{$item->title}</a>
</li>
{/foreach}
</ul>
Je pense que le {$actionparams.search} est le mot clé tapé, donc comment dire en smarty si {$item->title} contient la chaine de caractère {$actionparams.search} alors j'affiche le résultat.
Merci pour vos conseils.
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Sans aucun test et pas certain que ça fonctionne avec smarty 3:
Code : {if strpos("$item->title", "$actionparams.search") != false}
affichage
{/if}
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Sans aucun test et pas certain que ça fonctionne avec smarty 3:
Code : {if strpos("$item->title", "$actionparams.search") != false}
affichage
{/if}
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
Bonjour Jean le Chauve, merci pour ta réponse je viens d'essayer mais cela ne fonctionne pas
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
Bonjour Jean le Chauve, merci pour ta réponse je viens d'essayer mais cela ne fonctionne pas
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
15/03/2017, 15:38:47
(Modification du message : 15/03/2017, 15:45:15 par alas.)
Alors j'ai essayé (avec accolade, sans accolade, avec ou sans apostrophe mais rien ne change j'ai effectivement une erreur.
on line 30 "{if $item->title|strpos("$actionparams.search") != false}" - Unexpected "(", expected one of: "}"
Concernant le seconde solution, la function demande pas si la viriable commence par le terme indiqué (moi je dois chercher dans tout le titre)
Autre possiblité :
Est ce que la paramètre Filter ou Search_* ne peut pas être utilisé directement dans l'appel du module, j'ai tenté deux ou trois chose mais pas de résultat.
Je pense qu'il n'y a pas de solutions.
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
15/03/2017, 15:38:47
(Modification du message : 15/03/2017, 15:45:15 par alas.)
Alors j'ai essayé (avec accolade, sans accolade, avec ou sans apostrophe mais rien ne change j'ai effectivement une erreur.
on line 30 "{if $item->title|strpos("$actionparams.search") != false}" - Unexpected "(", expected one of: "}"
Concernant le seconde solution, la function demande pas si la viriable commence par le terme indiqué (moi je dois chercher dans tout le titre)
Autre possiblité :
Est ce que la paramètre Filter ou Search_* ne peut pas être utilisé directement dans l'appel du module, j'ai tenté deux ou trois chose mais pas de résultat.
Je pense qu'il n'y a pas de solutions.
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Hello,
tu as tenté un
Code : {LISEMonModule search_title='texte'}
? A priori c'est prévu dans le module (voir l'aide)
a+
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Hello,
tu as tenté un
Code : {LISEMonModule search_title='texte'}
? A priori c'est prévu dans le module (voir l'aide)
a+
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
15/03/2017, 17:59:56
(Modification du message : 15/03/2017, 18:00:58 par Jean le Chauve.)
Je parlais d'une erreur de sécurité, car Smarty 3 n'accepte plus tous les modificateurs PHP comme c'était le cas dans les précédentes versions.
L'erreur que tu as indiquée montre une erreur de syntaxe, essaye ceci :
Code : {if $item->title|strpos:"$actionparams.search" !== false}
strpos() cherche la première occurrence d'un terme dans l'ensemble de la string, donc trouvera le terme dans tout le titre, même s'il se trouve à la fin de la string.
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
15/03/2017, 17:59:56
(Modification du message : 15/03/2017, 18:00:58 par Jean le Chauve.)
Je parlais d'une erreur de sécurité, car Smarty 3 n'accepte plus tous les modificateurs PHP comme c'était le cas dans les précédentes versions.
L'erreur que tu as indiquée montre une erreur de syntaxe, essaye ceci :
Code : {if $item->title|strpos:"$actionparams.search" !== false}
strpos() cherche la première occurrence d'un terme dans l'ensemble de la string, donc trouvera le terme dans tout le titre, même s'il se trouve à la fin de la string.
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
jean-le-chauve j'ai essayé avec la syntaxe, je n'ai pas d'erreur mais rien ne s'affiche, alors que ca devrait être le cas ? Faut t'il que j'active le mode Debug pour voir si il y a une erreur ?
Code : [== Indéfini ==]
{if $item->title|strpos:"$actionparams.search" !==false} {$item->url} {/if}
Airelibre j'ai appelé mon module de la façon suivante :
Code : [== Indéfini ==]
{LISEFormation action="search" template_search="form_recherche_asf" template_summary="searchresults" template_detail="detail_formation_continue" summarypage="resultat-de-votre-recherche" detailpage="fiche-formation" }
Le problème s'est que cela me permet d'afficher le formulaire de recherche mais je n'ai pas encore le mot clé choisi donc quoi mettre à la place de 'texte' dans ton search_title='texte'. Moi j'aurais voulu qu'on puisse indiquer sur quel champ chercher, je pensais que la balise filter="" fonctionnait mais j'ai beau mettre title ou alias à l'intérieur cela ne fonctionne pas.
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
jean-le-chauve j'ai essayé avec la syntaxe, je n'ai pas d'erreur mais rien ne s'affiche, alors que ca devrait être le cas ? Faut t'il que j'active le mode Debug pour voir si il y a une erreur ?
Code : [== Indéfini ==]
{if $item->title|strpos:"$actionparams.search" !==false} {$item->url} {/if}
Airelibre j'ai appelé mon module de la façon suivante :
Code : [== Indéfini ==]
{LISEFormation action="search" template_search="form_recherche_asf" template_summary="searchresults" template_detail="detail_formation_continue" summarypage="resultat-de-votre-recherche" detailpage="fiche-formation" }
Le problème s'est que cela me permet d'afficher le formulaire de recherche mais je n'ai pas encore le mot clé choisi donc quoi mettre à la place de 'texte' dans ton search_title='texte'. Moi j'aurais voulu qu'on puisse indiquer sur quel champ chercher, je pensais que la balise filter="" fonctionnait mais j'ai beau mettre title ou alias à l'intérieur cela ne fonctionne pas.
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
15/03/2017, 20:28:42
(Modification du message : 15/03/2017, 20:30:03 par Jean le Chauve.)
Le code que je t'ai donné ne fonctionne sans doute pas.
Airelibre connaissant le module, il a donné la bonne réponse à ton problème :
Citation :est'il possible d'effectuer une recherche exclusivement dans le titre de l'item plutôt que dans l'ensemble des champs ajouté dans mon module ?
Puis tu lui réponds :
Citation :Moi j'aurais voulu qu'on puisse indiquer sur quel champ chercher
Faudrait savoir
Ensuite, tu dis ne pas connaître à l'avance le terme à rechercher dans le titre, on peut en déduire que ce sera l'internaute qui le choisira. Il te suffirait alors d'en faire une variable et de le mettre dans {LISEMonModule search_title=$variable}.
Mais comment veux-tu qu'il trouve le mot-clé exact si tu ne lui donnes pas à choisir dans une liste prédéfinie ?
Ce serait sympa que tu réfléchisses un peu plus à ton algorithme. Que veux-tu exactement et quelle sera la procédure à suivre pour l'internaute ?
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
15/03/2017, 20:28:42
(Modification du message : 15/03/2017, 20:30:03 par Jean le Chauve.)
Le code que je t'ai donné ne fonctionne sans doute pas.
Airelibre connaissant le module, il a donné la bonne réponse à ton problème :
Citation :est'il possible d'effectuer une recherche exclusivement dans le titre de l'item plutôt que dans l'ensemble des champs ajouté dans mon module ?
Puis tu lui réponds :
Citation :Moi j'aurais voulu qu'on puisse indiquer sur quel champ chercher
Faudrait savoir
Ensuite, tu dis ne pas connaître à l'avance le terme à rechercher dans le titre, on peut en déduire que ce sera l'internaute qui le choisira. Il te suffirait alors d'en faire une variable et de le mettre dans {LISEMonModule search_title=$variable}.
Mais comment veux-tu qu'il trouve le mot-clé exact si tu ne lui donnes pas à choisir dans une liste prédéfinie ?
Ce serait sympa que tu réfléchisses un peu plus à ton algorithme. Que veux-tu exactement et quelle sera la procédure à suivre pour l'internaute ?
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Alas - si tu utilises l'action de recherche, tu peux très bien revoir le gabarit de recherche pour n'afficher que le champ "titre" je pense.
Est-ce une solution viable ?
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Alas - si tu utilises l'action de recherche, tu peux très bien revoir le gabarit de recherche pour n'afficher que le champ "titre" je pense.
Est-ce une solution viable ?
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
Alors je vais donner une explication plus claire. Le lien du site pour lequel j'ai le problème : ICI
Sur la partie droite il y un champ de recherche créé à partir de mon instance LISE, dans ce champ je demande aux internautes de taper un mots clé (exemple Word). Ce champ de recherche est implémanté de la façon suivante :
Code : [== Indéfini ==]
{LISEFormation action="search" template_search="form_recherche_asf" template_summary="searchresults" template_detail="detail_formation_continue" summarypage="resultat-de-votre-recherche" detailpage="fiche-formation" }
Du coup si j'ai bien compris la méthode de Mathieu, voici ce qu'il devrait y avoir dans mon gabarit "searchresults"
Code : [== Indéfini ==]
{if !empty($actionparams.search)}
<h2>{$mod->ModLang('searchresultsfor')} "{$actionparams.search}"</h2>
{/if}
{LISEFormation search_title="{$actionparams.search}" template_summary="Form_sommaire_page_formation"}
Hors j'ai essayé tout cela mais rien ne fonctionne :
search_title="{$actionparams.search}"
search_title="$actionparams.search"
search_alias="{$actionparams.search}"
search_alias="$actionparams.search"
Je ne perds pas espoir
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
Alors je vais donner une explication plus claire. Le lien du site pour lequel j'ai le problème : ICI
Sur la partie droite il y un champ de recherche créé à partir de mon instance LISE, dans ce champ je demande aux internautes de taper un mots clé (exemple Word). Ce champ de recherche est implémanté de la façon suivante :
Code : [== Indéfini ==]
{LISEFormation action="search" template_search="form_recherche_asf" template_summary="searchresults" template_detail="detail_formation_continue" summarypage="resultat-de-votre-recherche" detailpage="fiche-formation" }
Du coup si j'ai bien compris la méthode de Mathieu, voici ce qu'il devrait y avoir dans mon gabarit "searchresults"
Code : [== Indéfini ==]
{if !empty($actionparams.search)}
<h2>{$mod->ModLang('searchresultsfor')} "{$actionparams.search}"</h2>
{/if}
{LISEFormation search_title="{$actionparams.search}" template_summary="Form_sommaire_page_formation"}
Hors j'ai essayé tout cela mais rien ne fonctionne :
search_title="{$actionparams.search}"
search_title="$actionparams.search"
search_alias="{$actionparams.search}"
search_alias="$actionparams.search"
Je ne perds pas espoir
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Non ce que je proposais c'était de simplifier ton gabarit de recherche "form_recherche_asf" pour n'y placer que l'input qui correspond au titre.
Ainsi plus besoin de bidouiller le gabarit de résultats, et c'est plus logique
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Non ce que je proposais c'était de simplifier ton gabarit de recherche "form_recherche_asf" pour n'y placer que l'input qui correspond au titre.
Ainsi plus besoin de bidouiller le gabarit de résultats, et c'est plus logique
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
Voici mon gabarit de fomulaire ? J'avoue que je suis un peu perdu la ....
Mathieu quand tu dis "placer que l'input qui correspond au titre" c'est à dire ?
CI-dessous la gabarit de recherche.
Code : [== Indéfini ==]
<div id="{$modulealias}_search">
{$formstart}
<div id="formulaire_recherche" class="grid-center">
<div class="col-9">
<input type="text" id="{$modulealias}searchinput" placeholder="TAPEZ UN MOT CLE" class="input_recherche" name="{$actionid}search" size="20" maxlength="50" value="" />
</div>
<div class="col-3">
<input class="btn_submit" name="submit" value="OK" type="submit" />
</div>
</div>
{$formend}
</div>
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
Voici mon gabarit de fomulaire ? J'avoue que je suis un peu perdu la ....
Mathieu quand tu dis "placer que l'input qui correspond au titre" c'est à dire ?
CI-dessous la gabarit de recherche.
Code : [== Indéfini ==]
<div id="{$modulealias}_search">
{$formstart}
<div id="formulaire_recherche" class="grid-center">
<div class="col-9">
<input type="text" id="{$modulealias}searchinput" placeholder="TAPEZ UN MOT CLE" class="input_recherche" name="{$actionid}search" size="20" maxlength="50" value="" />
</div>
<div class="col-3">
<input class="btn_submit" name="submit" value="OK" type="submit" />
</div>
</div>
{$formend}
</div>
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Dans ce cas tu dois utiliser le name="{$actionid}search_title" normalement, pour ne chercher que sur le titre
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Dans ce cas tu dois utiliser le name="{$actionid}search_title" normalement, pour ne chercher que sur le titre
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
Airelibre cela ne fonctionne pas non plus :/ j'ai essayé avec name="{$actionid}search_title et name="{$actionid}search_alias
Messages : 345
Sujets : 45
Inscription : Oct 2007
Réputation :
0
Airelibre cela ne fonctionne pas non plus :/ j'ai essayé avec name="{$actionid}search_title et name="{$actionid}search_alias
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Peut-être que l'action "search" filtre ce nom de champ ... ca mériterait une lecture du code source pour voir.
Tu peux aussi faire un formulaire tout simple qui en appelant une autre page lance {LISEFormations search_title=$smarty.post.champrecherche} ou quelque chose comme ca, ca peut être une solution alternative
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Peut-être que l'action "search" filtre ce nom de champ ... ca mériterait une lecture du code source pour voir.
Tu peux aussi faire un formulaire tout simple qui en appelant une autre page lance {LISEFormations search_title=$smarty.post.champrecherche} ou quelque chose comme ca, ca peut être une solution alternative
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
17/03/2017, 18:57:32
(Modification du message : 17/03/2017, 18:58:53 par Jean le Chauve.)
Je vais me mêler de ce qui ne me regarde pas, mais je suis assez vieux pour assumer
Je trouve que ta recherche par mot-clé ne sera pas efficace. Une erreur d'orthographe (extrêmement fréquente de nos jours ), un synonyme et c'est foutu, la recherche ne renverra rien surtout que tu n'as pas des tonnes de formations.
Pourquoi ne pas utiliser ta page "les formations" pour toutes les afficher dans des tabs au survol de la souris (JQuery) ?
En passant, tu utilises les majuscules accentuées, ou pas, suivant les cas. Ce serait mieux de respecter la charte graphique à ce sujet. Et diplômante, pas dîplomante .
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
17/03/2017, 18:57:32
(Modification du message : 17/03/2017, 18:58:53 par Jean le Chauve.)
Je vais me mêler de ce qui ne me regarde pas, mais je suis assez vieux pour assumer
Je trouve que ta recherche par mot-clé ne sera pas efficace. Une erreur d'orthographe (extrêmement fréquente de nos jours ), un synonyme et c'est foutu, la recherche ne renverra rien surtout que tu n'as pas des tonnes de formations.
Pourquoi ne pas utiliser ta page "les formations" pour toutes les afficher dans des tabs au survol de la souris (JQuery) ?
En passant, tu utilises les majuscules accentuées, ou pas, suivant les cas. Ce serait mieux de respecter la charte graphique à ce sujet. Et diplômante, pas dîplomante .
|