We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 36624
    • 535 Posts
    Bonjour,

    actuellement, je fais un site pour un libraire.

    j’ai un dossier plein de livres (avec un document par livre).

    j’ai aussi un dossier avec plein d’auteurs (un document par auteur).

    grâce au snippet Related , dans chaque livre je peux associer un auteur via un dropdown, c’est super pratique.

    pour info ma tv [*auteur*] est configurée comme suit avec un @bindings:

    @EVAL return $modx->runSnippet(’Related’, array(’parents’=>’3’,’tpl’=>’auteurnameTpl’));

    ce snippet retourne l’id du document. Dans le document "livre", ma tv [*auteur*] vaut donc, par exemple, 21 (id de l’auteur).

    Finalement pour afficher l’auteur dans ma page, j’utilise getField qui va afficher le nom.
    ( par exemple : [!GetField? &docid=`[*auteur*]` &parent=`0` &parentLevel=`0` &field=`longtitle` !])

    Mon problème c’est que si je cherche le nom de l’auteur avec Ajaxsearch (1.8.2) et cet appel :

    [!AjaxSearch? &ajaxSearch=`0` &AS_showForm=`0` &highlightResult=`0` &withTvs=`-:image_couverture,vignette_couverture`!]

    le livre de l’auteur n’est pas retourné..

    Je sais que Ajaxsearch est très performant mais nécessite de bien maitriser les paramètres, ce qui n’est malheureusement pas mon cas.. alors y a-t-il une solution à ce problème ?

    Merci.


      CTRL+SHIFT+U - Clear Cache
      CTRL+SHIFT+H - Hiding Heft Panel
      CTRL+SHIFT+N - Fast Create Resource
      CTRL+ALT+P - Preview Recource (in edit resorce window)
      CTRL+ALT+S - Save
      • 5811
      • 1,717 Posts

      Je viens découvrir ton post ...

      En fait toute la réponse est sur ce post
      Dans le cas présent ton appel [!GetField? &docid=`[*auteur*]` &parent=`0` &parentLevel=`0` &field=`longtitle` !] est supprimé par la fonction par défaut.
      Donc il te faut protéger les appels de snippets en proposant une autre fonction stripOutput.

      Autre solution, ajouter la ligne de code suivante:
      $text = $modx->parseDocumentSource($text); // parse document
      dans la fonction cleanText du fichier classes/search.class.inc.php aux alentours de la ligne 868:
      /**
       * cleanText : strip function to clean outputted results  
       */
        function cleanText($text,$stripOutput) {
        
          $text = $modx->parseDocumentSource($text); // parse document
      
          if (function_exists($stripOutput)) $text = $stripOutput($text);
          else $text = $this->defaultStripOutput($text);
          return $text;
        }
      L’appel à la fonction parseDocumentSource parse le document (et donc l’appel de snippet) avant d’appliquer la fonction defaultStripOutput.
        • 36624
        • 535 Posts
        Merci d’avoir répondu

        j’ai donc modifié le code comme expliqué ci-dessus (ligne 888 chez moi - 1.8.4 - evo.1.0.2) mais j’ai une page blanche quand je fais une recherche maintenant et aucune erreur dans les rapports modx...

        je vais lire en détails l’autre post que tu as mis en lien grin
          CTRL+SHIFT+U - Clear Cache
          CTRL+SHIFT+H - Hiding Heft Panel
          CTRL+SHIFT+N - Fast Create Resource
          CTRL+ALT+P - Preview Recource (in edit resorce window)
          CTRL+ALT+S - Save