We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25857
    • 23 Posts
    Bonjour,
    voila je veux créer une liste d’exposant pour un site, et quand on clique sur le nom d’un exposant on arrive sur sa fiche détailler. Je suis partis du principe ou pour moi un webuser = un exposant. J’’ai trouver un snippet que me permet de liste les web user, par contre mon problème vient de la fiche détailée j’avais trouver un moyen d’afficher les données d’un web user mais le problème c’est que je passai son id par l’URL, m’a question est comment passer l’id au snippet sans passer par l’url, j’ai essayé un getPlaceholder mais ça fonctionne pas.

    Page qui liste les exposant snippet Showmember
     <ul>[!ShowMembers? &webGroup=`Exposant`&tpl=`test` &seperator=` `!]</ul>


    Son chunk pour le tpl
       <li id='[+id+]'><a href="[~3~]"> [+fullname+]</a></li>


    et enfin mon snippet pour afficher la fiche détaillée :
    <?php
    $id=$modx->getPlaceholder($id);
    
        $expo=$modx->getWebUserInfo($id['id']);
    
        include_once($modx->config['base_path'].'manager/includes/lang/country/french_country.inc.php');
    
        $pays=$_country_lang[$expo['country']];
    
        $modx->setPlaceholder('nom',$expo['fullname']);
    
        $modx->setPlaceholder('email',$expo['email']);
    
        $modx->setPlaceholder('tel',$expo['phone']);
    
        $modx->setPlaceholder('pays',$pays);
    
        $modx->setPlaceholder('web',$expo['state']);
    
        $modx->setPlaceholder('logo',$expo['photo']);
    
        $modx->setPlaceholder('commentaire',$expo['comment']);
    
        $modx->documentObject['pagetitle']=$expo['fullname']
    
        return $modx->getChunk('fiche_exposant');
    ?>


    et son chunck :
    <div>
    <img src="[+logo+]" />
    <p>[+nom+]</p>
    <p>[+email+]</p>
    <p>[+tel+]</p>
    <p>[+pays+]</p>
    <p>[+web+]</p>
    <p>[+commentaire+]</p>
    </div>


    Merci
      • 11975
      • 2,542 Posts
      Salut,

      les placeholders de modx sont valables entre les snippets uniquement dans le même temps d’éxécution du parser.
      Lorsque tu changes de page, le parser est éxécuté à nouveau et les placeholders remis à zéro en quelque sorte.

      A part les sessions, je ne vois pas comment tu pourrais faire si tu ne souhaites pas voir l’id dans l’url.

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 25857
        • 23 Posts
        Ouais j’ai pensé au session aussi mais étant donner que je charge toute la liste comment passée le bonne id ?
          • 5811
          • 1,717 Posts
          Une fenêtre ajax ouverte sur le click du nom de l’exposant cela n’irait pas ?
            • 16732
            • 592 Posts
            Bonjour,
            Pourrais-tu nous expliquer pourquoi tu ne veux pas passer l’id par l’url?
              • 25857
              • 23 Posts
              Bonjour,
              Pourrais-tu nous expliquer pourquoi tu ne veux pas passer l’id par l’url?

              Par rapport au URL propore et aussi pour par que quelqu’un saisisse une id au hasard. Après si ya vraiment pas le choix oui je feras pas l’url mais bon l’instant je cherche pluto des solutuion alternative.

              Insert Quote
              Une fenêtre ajax ouverte sur le click du nom de l’exposant cela n’irait pas ?

              tu peux m’en dire plus sur ton Idée.
                • 5811
                • 1,717 Posts
                Une fenêtre ajax ouverte sur le click du nom de l’exposant cela n’irait pas ?
                tu peux m’en dire plus sur ton Idée.
                Il s’agit lors de l’affichage de la page (événement domReady) d’associer à chaque element <li id=’xx’> un évenement de type ’click’ qui déclenche un appel XmlHttpRequest (ajax) sur le server pour lire la fiche correspondante.

                A titre d’exemple voici très simplifié comment pourrait fonctionner ce code:
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                <html>
                  <head>
                  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
                  <title></title>
                <script type="text/javascript" src="mootools.js"></script>
                
                <script type="text/javascript">
                		window.addEvent('domready', function(){
                		
                      lis = $$("#memberlist li");
                      for(i=0;i<lis.length;i++){
                          li = lis[i];
                          li.addEvent('click', function(e) {
                              e = new Event(e).stop();
                      				
                      				var url = "showMembers.php";
                      				
                      				var pars = Object.toQueryString({
                      				    q: url,
                                  id: this.id
                              });
                       
                      			  new Ajax(url, { postBody: pars, update: $('fiche') }).request();
                
                  		    });
                      }
                		});
                 
                </script>
                
                  </head>
                  <body>
                
                  <h3>Liste des exposants :</h3>
                  <div id='fiche'></div>
                  <ul id="memberlist">
                   <li id='23'><a href="#">Pierre Ponce</a></li>
                   <li id='37'><a href="#">Jean Bonneau</a></li>
                   <li id='41'><a href="#">Melusine Enfaillite</a></li>
                   <li id='48'><a href="#">Paul Ochon</a></li>
                  </ul>
                  </body>
                </html>

                avec showMembers.php:
                <?php
                
                $id = $_POST['id'];
                    
                $expo = array(
                    23 => array('country' => 'France', 'fullname' => 'Pierre Ponce', 'email' => '[email protected]', 'phone' => '01 43 78 25 32', 'comment' => 'perfumer'),
                    37 => array('country' => 'France', 'fullname' => 'Jean Bonneau', 'email' => '[email protected]', 'phone' => '05 43 88 55 32', 'comment' => 'butcher'),
                    41 => array('country' => 'France', 'fullname' => 'Melusine Enfaillite', 'email' => '[email protected]', 'phone' => '04 43 28 25 32', 'comment' => 'boss'),
                    48 => array('country' => 'France', 'fullname' => 'Paul Ochon', 'email' => '[email protected]', 'phone' => '02 43 78 55 81', 'comment' => 'clothes')
                );
                    
                echo "<span> Country: {$expo[$id]['country']}   Full name: {$expo[$id]['fullname']}   Email: {$expo[$id]['email']}   Phone: {$expo[$id]['phone']}   Comment: {$expo[$id]['comment']} </span>";
                
                ?>
                Bien sûr showMembers.php est très simple et doit remplacé par l’appel à la lecture de fiche. De plus avec les bons styles css, tu peux afficher la fiche (<div id="fiche"></div>en incrusté (relative) ou en overlap (absolute). Et rajouter un lien de type "fermer" pour faire disparaitre la fiche.

                Ci-joint le code de démo. A tester en local : http://localhost/showMembers.html
                  • 5811
                  • 1,717 Posts
                  Finalement Ryumikage, tu fais comment ?