We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10156
    • 9 Posts
    Bonjour
    je débute avec Modx, j’ai commencé à mettre en place des galeries via Maxigallery, dans lesquelles j’aimerais rechercher via AjaxSearch. Comment puis-je afficher les
    résultats de la recherche soit sous forme de lien (cas d’un article) ou d’une image ? je suis un peu paumé...
      • 5811
      • 1,717 Posts
      je suis un peu paumé...
      Normal, AjaxSearch n’est pas un des snippet les plus facile à appréhender. Ni le mieux documenter, d’ailleurs.
      Comment puis-je afficher les résultats de la recherche soit sous forme de lien (cas d’un article) ou d’une image ?
      En fait tu peux faire des recherches dans un document (par défaut) mais aussi dans les tables de maxigallery ou de jot (commentaires).
      Pour cela il te faut utiliser le paramamètre &whereSearch. Par défaut &whereSearch=``content,tv`. Ce qui signifie que la recherche se fait dans les documents et les variables de templates. Pour ajouter les tables de maxigallery, tu ajoutes: &whereSearch=`content|tv|maxigallery` dans les appels de snippet AS

      La demo du site la plus parlante est sur http://www.modx.wangba.fr/index.php?id=247

      [!AjaxSearch? &documents=`104,155` &language=`english-utf8` &ajaxMax=`10` &searchWordList=`galWordList` &whereSearch=`content:null|maxigallery|jot` &tplLayout=`optionMultipleList` &tplAjaxResult=`withMaxigalleryJotAjaxResult`!]


      Ici, je fais une recherche dans les galeries #104 et #155. j’utilise le mode ajax (tu peux bien sur utiliser le mode non-ajax: &ajaxSearch=`0`). Comme je limite la liste des mots à rechercher j’utilise le paramètre searchWordList. Ici &whereSearch=`content:null|maxigallery|jot` signifie que je recherche exclusivement dans les tables maxigallery et jot. content:null, exclus la recherche dans les docs.

      &tplLayout=`optionMultipleList` définit le chunk à utiliser comme template layout a utiliser pour afficher le formulaire de saisie (input field and radio boxes)

      &tplAjaxResult=`withMaxigalleryJotAjaxResult` définit le chunk à utiliser comme template pour l’affichage des résultats. Voici sa forme:
      <div class="[+as.resultClass+]">
        <a class="[+as.resultLinkClass+]" href="[+as.resultLink+]" title="[+as.longtitle+]">[+as.pagetitle+]</a>
      [+as.descriptionShow:is=`1`:then=`
        <span class="[+as.descriptionClass+]">[+as.description+]</span>
      `+]
      [+as.gal_idShow:is=`1`:then=`
        <br />[!MaxiGallery? &pic_query_ids=`[+as.gal_id+]` &galleryPictureTpl=`subSearchGalleryPictureTpl`!] 
      `+]<br />
      [+as.jot_contentShow:is=`1`:then=`
        <div class="[+as.jot_contentClass+]">[+as.jot_content+]</div><br />
      `+]
      [+as.extractShow:is=`1`:then=`
        <div class="[+as.extractClass+]"><p>[+as.extract+]</p></div>
      `+]
      [+as.breadcrumbsShow:is=`1`:then=`
        <span class="[+as.breadcrumbsClass+]">[+as.breadcrumbs+]</span>
      `+]
      </div>
      Tu noteras que j’utilise un appel maxigallery pour afficher l’image retournée par la recherche:
      [!MaxiGallery? &pic_query_ids=`[+as.gal_id+]` &galleryPictureTpl=`subSearchGalleryPictureTpl`!]


      Si c’est encore obscur, n’hésites pas ...
      J’ai prévu de publier sous forme de How-to une doc utilisateur un peu plus conviviale que le wiki. Mais bon probablement pas avant cet hiver.
        • 10156
        • 9 Posts
        Super, j’essaye ça de suite, merci beaucoup pour cette réponse complète et rapide !
          • 10156
          • 9 Posts
          J’ai du louper un truc : après essai avec ton template et un appel du snippet (le optionMultipleList ne convenant pas à mon besoin) :
          [!AjaxSearch? &documents=`58,63,64` &language=`english-utf8` &ajaxMax=`10` &searchWordList=`galWordList` &whereSearch=`content:null|maxigallery|jot` &tplAjaxResult=`withMaxigalleryJotAjaxResult`!]

          Avec un mot présent dans le doc 58 et la galerie 63, j’obtiens un résultat bizarre :
          Un lien vers ma galerie (mais pas l’image) et pas le résultat de la recherche simple vers le document
          58 (alors que l’appel simple [!AjaxSearch!] me le retourne.
            • 5811
            • 1,717 Posts
            et pas le résultat de la recherche simple vers le document
            Normal, car tu as écrit content:null qui exclus la recherche dans le document. Utilise plutôt: &whereSearch=`content|maxigallery`
            et si tu veux par exemple chercher que dans le titre du doc: &whereSearch=`content:pagetitle|maxigallery`
            Le caractère "|" sépare les tokens (en fait = nom de table Modx), tels que content (=document), tv, maxigallery, jot
            Apres le caractère ":" spécifie les champs dans le lequel tu souhaites chercher. Si tu ne mets rein, tous les champs seront examinés.


            <a class="[+as.resultLinkClass+]" href="[+as.resultLink+]" title="[+as.longtitle+]">[+as.pagetitle+]</a> 
            te donne le lien vers la page (gallery ou non)

            la ligne:
             [+as.gal_idShow:is=`1`:then=`
              <br />[!MaxiGallery? &pic_query_ids=`[+as.gal_id+]` &galleryPictureTpl=`subSearchGalleryPictureTpl`!] 
            `+]
            doit te donner l’image.

            As tu défini le template maxiGallery subSearchGalleryPictureTpl ?

            Dans le cas de la démo, le voici:
            [+maxigallery.embedtype:is=`smoothgallery`:then=` 
            	<div class="imageElement">
            	<h3>[+maxigallery.picture.title:htmlent+]</h3>
            	<p>[+maxigallery.picture.descr:htmlent+]</p>
            	<a href="[+maxigallery.picture_link_url+]" title="[+maxigallery.strings.click_to_zoom+]" class="open"></a>
            	<img src="[(base_url)][+maxigallery.path_to_gal+][+maxigallery.picture.filename+]" class="full" />
            	<img src="[(base_url)][+maxigallery.path_to_gal+]tn_[+maxigallery.picture.filename+]" class="thumbnail" />
            	</div>
            `+]
            
            [+maxigallery.embedtype:isnot=`smoothgallery`:then=`
             
            <li>
            [+maxigallery.embedtype:is=`slidebox`:then=` 
            
            	<a href="[(base_url)][+maxigallery.path_to_gal+][+maxigallery.picture.filename+]" rel="lightbox_[+maxigallery.path_to_gal+]gallery">
            
            `+]
            
            [+maxigallery.embedtype:is=`lightboxv2`:then=` 
            
            	<a href="[(base_url)][+maxigallery.path_to_gal+][+maxigallery.picture.filename+]" rel="lightbox[maxigallery]" title="[+maxigallery.picture.title:htmlent+] - [+maxigallery.picture.descr:htmlent+]">
            
            `+]
            
            [+maxigallery.embedtype:is=`slimbox`:then=` 
            
            	<a href="[(base_url)][+maxigallery.path_to_gal+][+maxigallery.picture.filename+]" rel="lightbox[maxigallery]" title="[+maxigallery.picture.title:htmlent+] - [+maxigallery.picture.descr:htmlent+]">
            
            `+]
            
            [+maxigallery.embedtype:is=`popup`:then=` 
            
            	<a href="javascript:void(0);" onClick="javascript:openWindow('[(base_url)][+maxigallery.path_to_gal+][+maxigallery.picture.filename+]','[+maxigallery.picture.title:htmlent+]',[+maxigallery.picture_height_normal+],[+maxigallery.picture_width_normal+],'gallery');">
            
            `+]
            
            [+maxigallery.embedtype:is=`external`:then=` 
            
            	<a href="[(base_url)][+maxigallery.path_to_gal+][+maxigallery.picture.filename+]" rel="external">
            
            `+]
            
            [+maxigallery.embedtype:is=``:then=`
            	
            	<a href="[+maxigallery.picture_link_url+]">
            
            `+]
            	
            	 	<img src="[(base_url)][+maxigallery.path_to_gal+]tn_[+maxigallery.picture.filename+]" height="[+maxigallery.picture_height_thumb+]" class="thumbnail" title="[+maxigallery.picture.title:htmlent+] [+maxigallery.strings.click_to_zoom+]" alt="[+maxigallery.picture.title:htmlent+] [+maxigallery.strings.click_to_zoom+]" />
            	
            	</a>
            	[+maxigallery.picture.title:isnot=``:then=`
            		<p style="width: [+maxigallery.picture_width_thumb+]px;">
            		[+maxigallery.picture.title:htmlent+]
            		</p>
            	`+]
            </li>
            `+]

              • 10156
              • 9 Posts
              Merci, ça marche nickel