We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 21946
    • 283 Posts
    re-hello smiley
    Tu as peut être donné la bonne solution mais je manque sans doute simplement encore de connaissances pour la comprendre pleinement.

    Je vais donner un exemple, je serais sans doute plus clair ainsi. Mon souci principal est que ma page s’alourdit considérablement et que j’aimerais limiter au maximum les appels au snippets en me disant que "un appel=une requete sql supplémentaire" (du moins je suppose).

    Je donne un exemple de ce que j’essayais de dire : pour le haut de page dont j’ai donné le lien plus haut j’utilise un appel à Ditto avec ce chunk: (qui va récupérer les infos à afficher sur un document "fiche de jeu" qui contient toutes les infos à propos du jeu.)

    (appel)
    [[Ditto? &documents=`[*id-fiche-JV*]` &tpl=`entete-JV` ]]

    le chunk entete-JV
    <div id="entete_test">
    
    <img src="[*chapeau*]"/>
    <div id="descriptifjeux">
    <h5> Editeur :[+éditeur+] </h5>
    <h5>Développeur :[+développeur+]</h5>
    <h5>genre : [+genre+]</h5>
    <h5>version : [+version+]</h5>
    <h2>[+title+]</h2>
    <h5 id="siteofficiel"><a href="[~[+id+]~]">voir la fiche</a> | <a target="_blank" href="[+site+]">site officiel</a></h5>
    </div>
    
    </div>


    Mais je dois aussi bien plus bas dans mon code html afficher la jaquette qui provient AUSSI de la même fiche de jeu. Donc je dois renouveler mon appel à Ditto de façon identique uniquement pour afficher la jaquette avec un chunk différent qui contiendra [+jaquette+] par exemple. Ou bien utiliser GetField.

    ET rebelotte à un autre endroit de mon code html ou je dois par exemple afficher le prix du jeu; qui par un malheureux choix de design ne se trouve pas au même endroit que le reste.

    Donc je me retrouve à faire trois appels à Ditto pour récuperer des infos provenant du même document (la fiche de jeu correspondant à l’article). Je me disais que cela provoquait donc sans doute 3 requetes sur la base de données.

    J’essayais donc de savoir si il était possible de limiter ces 3 appels à un seul appel de Ditto qui stockerait une bonne fois pour toutes toutes les variables du document fiche de jeu et que je pourrais ensuite facilement afficher dans tous le reste du document comme bon me semble;sans avoir à renouveler mon appel. Un peu comme en PHP on fait une requete à la BDD puis qu’on stocke le résultat dans une variable.

    $infos=($reponse=mysql_fetch_array($reponse));

    On peut ensuite afficher où on veut l’info

    <?php echo $infos['editeur']; ?>


    sans avoir à renouveller un appel à la BDD. Je voulais savoir si une manip existait pour pouvoir stocker de cette maniere le résultat de ma requete à Ditto.

    Désolé si ma question est un peu stupide ou mal formulée. En gros j’aimerais simplement optimiser au maximum la page article que je suis en train de refaire car j’ai peur qu’elle soit trop lourde à gérer...
      [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
      • 11975
      • 2,542 Posts
      Salut,

      voici un exemple de code pour utiliser les valeurs stockées avec &save=2
      L’appel doit etre placé après celui ed Ditto et avant les placeholders dans la page
      <?php
      
      // on a besoin de l'id de ditto pour recuperer la valeur stockee par ditto
      var $dittoID;
      
      //on recupere les valeurs stockées du document
      $dittoRs = $modx->getPlaceholder($dittoID."ditto_resource");
      //on suppose qu'il y a un seul document
      $dittoItem = $dittoRs[0];
      
      foreach($dittoItem as $kPh =>$vPh){
      	//pour chaque propriete on enregistre sa valeur dans un placeholder
      	$modx->setPlaceHolder($kPh,$vPh);
      	//pour les afficher dans le template [+$kPh+] placés après l'appel	
      }
      
      
      
      ?>
      /code]
      
      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 36624
        • 535 Posts
        ça l’air tellement bien qu’il faut que je teste tout ça ! Merci pour ce code Hélio.
          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
          • 21946
          • 283 Posts
          merci pour cette réponse; je tenterais ça la semaine prochaine smiley
            [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
            • 16732
            • 592 Posts
            @Helio : j’ai testé le code que tu proposes mais pour :

            $dittoRs = $modx->getPlaceholder($dittoID."ditto_resource");


            Si je fais un print_r de $dittoRs je n’ai pas les tvs et je n’ai que 3 ph : published, id et pagetitle.

            J’ai du loupé un truc huh ... Comment avoir plus de ph et surtout les Tvs ?

            Pour info je lance Ditto dans mon snippet (runsnippet) avec un save=3 (pas d’output de ditto)
              • 11975
              • 2,542 Posts
              Salut Laurent,

              bon alors voici le secret grin
              C’est un bout de code de la version de tvexplorer sur laquelle je travaille.
              Je me suis trompé dans mon précédent exemple

              <?php
              
              $dittoObj = $modx->getPlaceholder($prefixID."ditto_object");
              			
              			if(is_object($dittoObj)){
              //ICI !!!!!!
              				$d_prefetch = $dittoObj->prefetch['resource'];
              				if(is_array($d_prefetch) && count($d_prefetch)>0){
              					foreach($d_prefetch as $resource){
              				
              					$d_prefetchIDs[] = $resource['id'];
              				
              					}
              				$tveditor->functions->setSessionValue($prefixID.'prefetchIDs',$d_prefetchIDs);
              				
              				}
              			}
              


              Ceci dit j’ai un doute
              Personnellement je n’ai besoin que des ids
              Il faudra que je verifie si tous les champs trouvés dans les tpl font partie du tableau stocké

              EDIT: ca semble bon mais à tester de maniere plus approfondie
                Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                • 16732
                • 592 Posts
                J’ai utilisé ditto_object mais je n’ai rien dans ressource undecided

                A la vue du code du snippet il ne me semble pas possible de récupérer quoi que soit d’autre que l’id et le pagetitle des résultats par cette méthode.

                Car tout ce qui est manipulé à ce niveau se sont les id des résultats et ligne 1024 à 1038, on boucle sur ces ids pour créer les blocs de rendus (fusion des infos et des micros templates) et c’est ce que l’on a en sortie.

                On a jamais les infos brutes, pour cela, je pense qu’ il faudrait modifier la fonction render de Ditto pour qu’elle rende dispo ces infos.
                  • 11975
                  • 2,542 Posts
                  C’est étonnant
                  Je n’ai pas ce probleme
                  Si j’affiche le contenu de prefetch, j’ai les ids et l’ensemble des infos demandées(tvs y compris)

                  :-)
                    Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                    • 16732
                    • 592 Posts
                    ba je ne comprends pas non plus undecided :’(

                    Voici mon snippet de test (la requette Ditto renvoie 2 résultats si je l’utilise normalement)
                    <?php
                       $array_params['parents'] = '132';
                        $array_params['id'] = 'tdp';
                        //$array_params['tpl'] = 'tpl_tdpAccueilDitto';
                        $array_params['noResults'] = 'Aucun résultat';
                        $array_params['total'] = '6';
                         //$array_params['display'] = '1';
                         //$array_params['sortDir'] = 'DESC';
                         //$array_params['debug'] = '1';
                         $array_params['save'] = '3';
                         $modx->runSnippet("Ditto",$array_params);
                    
                    
                    
                     $dittoID = 'tdp_';
                    
                     $dittoObj = $modx->getPlaceholder($dittoID."ditto_object");
                    
                     print_r($dittoObj);
                    
                    

                    Voici mon objet Ditto :

                    <?php
                    ditto Object
                    (
                        [template] => template Object
                            (
                                [language] => Array
                                    (
                                        [language] => english
                                        [abbr_lang] => en
                                        [file_does_not_exist] => does not exist. Please check the file.
                                        [extender_does_not_exist] => extender does not exist. Please check it.
                                        [default_template] => 
                        <div class="ditto_item" id="ditto_item_">
                            <h3 class="ditto_pageTitle"><a href="[~~]"></a></h3>
                            <div class="ditto_documentInfo">by <strong></strong> on </div>
                            <div class="ditto_introText"></div>
                    
                        </div>
                    
                                        [bad_tpl] => <p>& either does not contain any placeholders or is an invalid chunk name, code block, or filename. Please check it.</p>
                                        [no_documents] => <p>No documents found.</p>
                                        [resource_array_error] => Resource Array Error
                                        [prev] => < Previous
                                        [next] => Next >
                                        [button_splitter] => |
                                        [default_copyright] => Debat&Co 2006
                                        [invalid_class] => The Ditto class is invalid. Please check it.
                                        [none] => None
                                        [edit] => Edit
                                        [dateFormat] => %d-%b-%y %H:%M
                                        [info] => Info
                                        [modx] => MODx
                                        [fields] => Fields
                                        [templates] => Templates
                                        [filters] => Filters
                                        [prefetch_data] => Prefetch Data
                                        [retrieved_data] => Retreived Data
                                        [placeholders] => Placeholders
                                        [params] => Parameters
                                        [basic_info] => Basic Info
                                        [document_info] => Document Info
                                        [debug] => Debug
                                        [version] => Version
                                        [summarize] => Summarize
                                        [total] => Total
                                        [sortBy] => Sort By
                                        [sortDir] => Sort Direction
                                        [start] => Start
                                        [stop] => Stop
                                        [ditto_IDs] => IDs
                                        [ditto_IDs_selected] => Selected IDs
                                        [ditto_IDs_all] => All IDs
                                        [open_dbg_console] => Open Debug Console
                                        [save_dbg_console] => Save Debug Console
                                    )
                    
                                [fields] => Array
                                    (
                                        [db] => Array
                                            (
                                                [0] => id
                                                [1] => pagetitle
                                                [2] => introtext
                                            )
                    
                                        [tv] => Array
                                            (
                                            )
                    
                                        [custom] => Array
                                            (
                                                [0] => author
                                                [1] => date
                                            )
                    
                                        [item] => Array
                                            (
                                            )
                    
                                        [qe] => Array
                                            (
                                            )
                    
                                        [phx] => Array
                                            (
                                            )
                    
                                        [rss] => Array
                                            (
                                            )
                    
                                        [json] => Array
                                            (
                                            )
                    
                                        [xml] => Array
                                            (
                                            )
                    
                                        [unknown] => Array
                                            (
                                            )
                    
                                    )
                    
                                [current] => base
                            )
                    
                        [resource] => 
                        [format] => html
                        [debug] => 
                        [advSort] => 
                        [sqlOrderBy] => Array
                            (
                                [0] => sc.createdon DESC
                            )
                    
                        [customReset] => Array
                            (
                            )
                    
                        [fields] => Array
                            (
                                [display] => Array
                                    (
                                        [db] => Array
                                            (
                                                [0] => id
                                                [1] => pagetitle
                                                [2] => introtext
                                                [3] => createdby
                                                [4] => published
                                                [7] => createdon
                                            )
                    
                                        [tv] => Array
                                            (
                                            )
                    
                                        [custom] => Array
                                            (
                                                [0] => author
                                                [1] => date
                                            )
                    
                                        [item] => Array
                                            (
                                            )
                    
                                        [qe] => Array
                                            (
                                            )
                    
                                        [phx] => Array
                                            (
                                            )
                    
                                        [rss] => Array
                                            (
                                            )
                    
                                        [json] => Array
                                            (
                                            )
                    
                                        [xml] => Array
                                            (
                                            )
                    
                                        [unknown] => Array
                                            (
                                            )
                    
                                    )
                    
                                [backend] => Array
                                    (
                                        [tv] => Array
                                            (
                                            )
                    
                                        [db] => Array
                                            (
                                                [0] => id
                                                [1] => published
                                                [2] => createdon
                                            )
                    
                                    )
                    
                            )
                    
                        [constantFields] => Array
                            (
                                [0] => Array
                                    (
                                        [0] => db
                                        [1] => tv
                                    )
                    
                                [db] => Array
                                    (
                                        [0] => id
                                        [1] => type
                                        [2] => contentType
                                        [3] => pagetitle
                                        [4] => longtitle
                                        [5] => description
                                        [6] => alias
                                        [7] => link_attributes
                                        [8] => published
                                        [9] => pub_date
                                        [10] => unpub_date
                                        [11] => parent
                                        [12] => isfolder
                                        [13] => introtext
                                        [14] => content
                                        [15] => richtext
                                        [16] => template
                                        [17] => menuindex
                                        [18] => searchable
                                        [19] => cacheable
                                        [20] => createdby
                                        [21] => createdon
                                        [22] => editedby
                                        [23] => editedon
                                        [24] => deleted
                                        [25] => deletedon
                                        [26] => deletedby
                                        [27] => publishedon
                                        [28] => publishedby
                                        [29] => menutitle
                                        [30] => donthit
                                        [31] => haskeywords
                                        [32] => hasmetatags
                                        [33] => privateweb
                                        [34] => privatemgr
                                        [35] => content_dispo
                                        [36] => hidemenu
                                    )
                    
                                [tv] => Array
                                    (
                                        [0] => tags
                                        [1] => dossierBlocChiffresCles
                                        [2] => dossierBlocEtatsdeslieux
                                        [3] => dossierBlocPropositions
                                        [4] => dossierBlocContexte
                                        [5] => dossierBlocReforme
                                        [6] => dossierLienChiffrescles
                                        [7] => tdpImage
                                        [8] => tdpAuteur
                                    )
                    
                            )
                    
                        [prefetch] => 
                        [sortOrder] => 
                        [customPlaceholdersMap] => Array
                            (
                            )
                    
                    )
                    


                    Pas de ressource donc rien dans prefetch

                    EDIT: j’utilise Ditto 2.1 BETA2
                      • 11975
                      • 2,542 Posts
                      Laurent,

                      je testerai avec Ditto2.1.2 pour confirmer si cela fonctionne ou non.
                      Est que ton appel sans le save retourne des documents?

                      :-)
                        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l