We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 20394
    • 134 Posts
    Un petit post sur les TVs :

    Liens conditionnels : pour lier une TV2 à une autre TV1, on peut utiliser le bind @EVAL qui va permettre de proposer des valeurs pour TV2 en fonction de la valeur choisie pour TV1 (@heliotrope, il me semble que tu as déjà réalisé ceci). Il faut enregistrer le document pour que le changement sur TV1 soit pris en compte mais avec un petit hack de type Ajax cela devrait pouvoir être changer.
    La TV1 peut d’ailleurs appartenir au document parent, et ainsi pour reprendre un de mes posts précédents on peut spécifier qu’un document "chapitre" ne peut être suivi que par un document "paragraphe" ou "section".

    Ce serait bien de proposer dans le manager un moyen simple de gérer ceci sans connaître du php et sans avoir à taper le @EVAL.

    Valeurs hiérarchisées Il faudrait un nouveau type pour les TV, appelé "tree" ou "hierarchie". Les valeurs optionnelles serait codée :
    valeur1=>(sousvaleur1||sousvaleur2)||valeur2.
    On sélectionnerai ensuite la valeur comme lorsque l’on navigue dans des menus et sous-menus.

    Cette hiérarchie de valeurs pourrait en fait correspondre à une arborescence de documents ModX qui serait appelés "catégories" plutôt qu’être codée en dur dans les valeurs optionnelles de la TV.

    Différentes forces de relation Une TV pourrait avoir plusieurs rendus suivant la force de la relation. Par exemple pour TVkeyword, nous aurions "mot clef très pertinent", "mot clé assez pertinent", "mot clef peu pertinent". Dans la base de données l’enregistrement de la TV donnerait :
    @#3;php||objet||MVC@#2;informatique||struts@#1;java
    Dans le manager lors de l’édition d’un document nous aurions trois champs multiple-select mutuellement exclusifs : la sélection d’un terme dans l’un entraine sa disparition comme choix possible dans les autres.

      • 11975
      • 2,542 Posts
      tu commences qd ?  wink

      A mon sens la priorité des TVs c’est d’être "recherchable" et aussi d’être associées à une fonctionnalité avancée de recherche.
      On devrait pouvoir utiliser leur format dans un formulaire pour limiter la recherche,cad restituer les champs tels qu’ils sont dans QE ou le manager mais sur le front.

      D’ailleurs je doute que la question ait été posée mais comment fonctionne la recherche dans le repository ?
      Ce serait intéressant d’avoir un retour d’experiences sur ce dvpt.

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 23050
        • 1,842 Posts
        Quote from: heliotrope at Oct 03, 2006, 02:17 PM

        A mon sens la priorité des TVs c’est d’être "recherchable"

        Helio, tu casses tous mes espoirs en quelques mots... j’étais persuadée que la recherche pouvait se faire sur les TV ! Non ? bon... Je suis d’accord avec toi, il faut remédier à cela.

        mrcou, si besoin de testeurs, compte sur moi... mon niveau en développement est trop limité (à moins que Marc ne me file un coup de main huh
          • 11975
          • 2,542 Posts
          Perrine,

          crois bien que j’en suis le premier navré undecided
          Mais la mise en oeuvre de cette fonctionnalité est loin d’être évidente.


          :-)
            Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
            • 6726
            • 7,075 Posts
            Ca fait pas mal de temps que j’insiste à ce sujet, récemment lors des échanges de l’équipe sur la 0.9.5 j’ai relancé ce sujet et Ryan a demandé à Kyle de bosser là dessus, le pauvre a hérité d’un beau bebé (je me suis excusé auprès de lui tongue).

            Donc ça ne restera pas lettre morte... mais c’est une grosse lacune, oui...
              .: COO - Commerce Guys - Community Driven Innovation :.


              MODx est l'outil id
              • 20394
              • 134 Posts
              En ce qui concerne le côté recherchable, est-ce que cela rejoint la fonction getDocumentChildrenByTVar ?
              Cette fonction peut facilement être modifiée en getDocumentsByTVar.
                • 6726
                • 7,075 Posts
                Non, j’ai cru un moment que c’était le cas, mais Kyle m’a confirmé que non...
                  .: COO - Commerce Guys - Community Driven Innovation :.


                  MODx est l'outil id
                  • 20394
                  • 134 Posts
                  Pourriez-vous m’expliquer pourquoi getDocumentChildrenByTVar ne permet pas de faire de la recherche dans les TVs ?
                  Cela concerne-t-il les TVs multiple-select uniquement ou bien toutes ?
                  Y-a-t-il un post du côté anglais sur le sujet ?

                  Merci d’avance.
                    • 11975
                    • 2,542 Posts
                    Salut,

                    dans le même post il y a cette fonction bien pratique.

                    
                    <?php
                    function getDocumentChildrenTV($parentid=0, $published=1, $tvfields = "*", $docsort="pagetitle", $docsortdir="ASC", $limit="")
                        {
                        global $modx;
                        
                        $variablesArray = $modx->getDocumentChildrenTVars($parentid, $tvfields, $published, $docsort, $docsortdir, $tvfields);
                    
                        // Rewrite array to $variablesArray_r
                        $variablesArray_r = array();
                        for($a=0; $a<count($variablesArray); $a++) {
                            for($b=0; $b<count($variablesArray[$a]); $b++) {
                            $variablesArray_r[$a][$variablesArray[$a][$b]['name']] = $variablesArray[$a][$b]['value'];
                            foreach ($variablesArray[$a][$b] as $name => $value) {
                                if ($name!="name" && $name!="value")
                                $variablesArray_r[$a][$variablesArray[$a][$b]['name'].".$name"] =$value;
                                }
                            }
                        }
                      
                        customSort($variablesArray_r, $docsort, $docsortdir);
                      return $variablesArray_r;
                    }
                    
                        // Version 1.1
                        // Parameters:
                        // data: an array of MODx documents
                        // fields: comma separated list of fields to sort on
                        // order: 'ASC' or 'DESC'
                        function customSort(&$data, $fields, $order) {
                        // Covert $fields string to array
                        foreach(explode(',',$fields) as $s) $sortfields[]=trim($s);
                    
                        $code="";
                        for($c=0;$c<count($sortfields); $c++)
                            $code .= "\$retval = strnatcmp(\$a['$sortfields[$c]'], \$b['$sortfields[$c]']); if(\$retval) return \$retval; ";
                            $code .= "return \$retval;";
                            $params = ($order=='ASC') ? '$a,$b' : '$b,$a';
                            usort($data, create_function($params, $code)); 
                        }
                    
                    


                    Elle retourne un tableau contenant tous les documents pour le parent passé en parametre avec pour chaque document les propriétés de ce denier et de toutes les TVs même vides pour ce document.

                    Exemple:


                    Array(
                    ...

                    [3] => Array
                    (
                    [thumbImg] => logo
                    [thumbImg.id] => 1
                    [thumbImg.type] => image
                    [thumbImg.caption] => thumbImg
                    [thumbImg.description] =>
                    [thumbImg.editor_type] => 0
                    [thumbImg.category] => 0
                    [thumbImg.locked] => 0
                    [thumbImg.elements] =>
                    [thumbImg.rank] => 0
                    [thumbImg.display] => image
                    [thumbImg.display_params] => &align=none
                    [thumbImg.default_text] =>
                    [tagsPhoto] => Viandes
                    [tagsPhoto.id] => 2
                    [tagsPhoto.type] => listbox-multiple
                    [tagsPhoto.caption] => tagsPhoto
                    [tagsPhoto.description] =>
                    [tagsPhoto.editor_type] => 0
                    [tagsPhoto.category] => 0
                    [tagsPhoto.locked] => 0
                    [tagsPhoto.elements] => Poissons||Viandes||Légumes||Salades||Céréales
                    [tagsPhoto.rank] => 0
                    [tagsPhoto.display] => delim
                    [tagsPhoto.display_params] => &format=,
                    [tagsPhoto.default_text] =>
                    [star_rating] => 0
                    [star_rating.id] => 4
                    [star_rating.type] => text
                    [star_rating.caption] => star_rating
                    [star_rating.description] =>
                    [star_rating.editor_type] => 0
                    [star_rating.category] => 0
                    [star_rating.locked] => 1
                    [star_rating.elements] =>
                    [star_rating.rank] => 0
                    [star_rating.display] =>
                    [star_rating.display_params] =>
                    [star_rating.default_text] => 0
                    [starRatingMachine] => <h4>StarRater</h4>

                    [starRatingMachine.id] => 5
                    [starRatingMachine.type] => textarea
                    [starRatingMachine.caption] => starRatingMachine
                    [starRatingMachine.description] =>
                    [starRatingMachine.editor_type] => 0
                    [starRatingMachine.category] => 0
                    [starRatingMachine.locked] => 1
                    [starRatingMachine.elements] =>
                    [starRatingMachine.rank] => 0
                    [starRatingMachine.display] =>
                    [starRatingMachine.display_params] =>
                    [starRatingMachine.default_text] => <h4>StarRater</h4>

                    [timeStamp] => @EVAL return time();
                    [timeStamp.id] => 6
                    [timeStamp.type] => text
                    [timeStamp.caption] => timeStamp
                    [timeStamp.description] =>
                    [timeStamp.editor_type] => 0
                    [timeStamp.category] => 0
                    [timeStamp.locked] => 0
                    [timeStamp.elements] =>
                    [timeStamp.rank] => 0
                    [timeStamp.display] =>
                    [timeStamp.display_params] =>
                    [timeStamp.default_text] => @EVAL return time();
                    [colonneDroite] => @INHERIT
                    [colonneDroite.id] => 7
                    [colonneDroite.type] => checkbox
                    [colonneDroite.caption] => colonneDroite
                    [colonneDroite.description] => Gestion des blocs de la colonne de droite
                    [colonneDroite.editor_type] => 0
                    [colonneDroite.category] => 0
                    [colonneDroite.locked] => 1
                    [colonneDroite.elements] => Navigation recettes=={{navRecettes}}||Caddie=={{shopXCart}}
                    [colonneDroite.rank] => 0
                    [colonneDroite.display] =>
                    [colonneDroite.display_params] =>
                    [colonneDroite.default_text] => @INHERIT
                    [bigImg] => @INHERIT
                    [bigImg.id] => 8
                    [bigImg.type] => image
                    [bigImg.caption] => bigImg
                    [bigImg.description] => Image grand Format
                    [bigImg.editor_type] => 0
                    [bigImg.category] => 0
                    [bigImg.locked] => 0
                    [bigImg.elements] =>
                    [bigImg.rank] => 0
                    [bigImg.display] =>
                    [bigImg.display_params] =>
                    [bigImg.default_text] => @INHERIT
                    [categoriePlats] => Entrées
                    [categoriePlats.id] => 11
                    [categoriePlats.type] => checkbox
                    [categoriePlats.caption] => categoriePlats
                    [categoriePlats.description] =>
                    [categoriePlats.editor_type] => 0
                    [categoriePlats.category] => 2
                    [categoriePlats.locked] => 0
                    [categoriePlats.elements] => Entrées||Plats||Desserts
                    [categoriePlats.rank] => 0
                    [categoriePlats.display] =>
                    [categoriePlats.display_params] =>
                    [categoriePlats.default_text] =>
                    [Saisons] =>
                    [Saisons.id] => 13
                    [Saisons.type] => listbox
                    [Saisons.caption] => Saisons
                    [Saisons.description] =>
                    [Saisons.editor_type] => 0
                    [Saisons.category] => 0
                    [Saisons.locked] => 1
                    [Saisons.elements] => printemps||été||automne
                    [Saisons.rank] => 0
                    [Saisons.display] =>
                    [Saisons.display_params] =>
                    [Saisons.default_text] =>
                    [alias] =>
                    [cacheable] => 1
                    [content] =>
                    [contentType] => text/html
                    [content_dispo] => 0
                    [createdby] => 0
                    [createdon] => 1157330249
                    [deleted] => 0
                    [deletedby] => 0
                    [deletedon] => 0
                    [description] =>
                    [donthit] => 0
                    [editedby] => 0
                    [editedon] => 0
                    [haskeywords] => 0
                    [hasmetatags] => 0
                    [hidemenu] => 0
                    [id] => 12914
                    [introtext] =>
                    [isfolder] => 0
                    [link_attributes] =>
                    [longtitle] =>
                    [menuindex] => 0
                    [menutitle] =>
                    [pagetitle] => recettes Asperges - 3
                    [parent] => 12910
                    [privatemgr] => 0
                    [privateweb] => 0
                    [pub_date] => 0
                    [published] => 1
                    [publishedby] => 0
                    [publishedon] => 0
                    [richtext] => 1
                    [searchable] => 1
                    [template] => 4
                    [type] => document
                    [unpub_date] => 0
                    )
                    )


                    Je me demande pourquoi elle n’a pas été rajouté au core mais elle pourrait servir de base pour une recherche sur les TVs.

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