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

    Je cherchais un snippet afin de gérer les Tags dans les pages et j’ai trouvé le snippet tagLinks

    > wiki
    >tagLinks

    Seulement voila j’arrive pas à le faire fonctionner sad le wiki en anglais me semble peu probant (peut etre que certaines subtiltées de language m’echappent).

    La situation : ma page index a pour id="2" qui est un folder et comportant 5 pages / friendly urls on
    Voila ce que j’ai fait:

    1- J’ai crée la variable tags (comme dans les captures d’écrans) avec comme valeurs: Green||Blue||Red
    2- En id=1508 j’ai crée un folder ’Categories’ (alias categories) et crée, en enfant, les documents nommes Green (alias green) Blue (alias blue) Red (alias red)
    3- Dans mes documents id 2 a 5 j’ai coché les tags que je voulais associer a chaque page.
    4- A partir de la, pour moi les elements sont mis en place donc je peux ’runner’ mon snippet dans mon index je mets [[tagLinks? &tv=`tags` &separator=` ` &format=`ul` &element=`span` &fap=`1` &path=`categories`]]
    5- Pas de resultats.

    Interpretation:

    Si j’ai bien compris les tags sont des liens pour une page recensant toutes les pages partageant le meme tag d’ou sur la page "categories/green.html" par expl on devra trouver un [!Ditto? &startID=`2` &tagMode=`onlyTags` &tags=`green`!]?
    ( ce que je n’ai pas ENCORE fait notez)

    Mais [[tagLinks? &tv=`tags` &separator=` ` &format=`ul` &element=`span` &fap=`1` &path=`categories`]] deverai tout de meme me renvoyer les tags cochés? non?

    Merci pour votre patience




    Quelqu’un l’a deja-t-il fait fonctionner? un autre snippet dans le meme genre?... j’approfondie mes problemes et je ferai un topic cas échéant

    Merci
      • 3133
      • 98 Posts
      ... A défaut existe t il un moyen de tester un snippet savoir si l’appel se fait correctement? meme si les parametres sont faut... mais pour débugger le truc quoi !!!
        • 6726
        • 7,075 Posts
        Certains snippets (notamment Ditto offrent un paramètre &debug mais là je ne vois pas ça dans la doc)

        Pas utilisé tagLinks donc je ne peux pas te donner de réponse avec certitude mais par contre tu as défini &separator=` ` (vide) et je ne suis pas sûr que ça ne pose pas de problème avec le snippet, qui par défaut a la valeur blank (donc si tu ne mets pas le paramètre, il est vide donc j’imagine que l’espace est le séparateur (il faudrait que je regarde le code du snippet).

          .: COO - Commerce Guys - Community Driven Innovation :.


          MODx est l'outil id
          • 3133
          • 98 Posts
          En fait, j’ai mis un exemple, mais avant de poser la question, j’ai essayé beaucoup de chose sans le moindre resultat.

          je mets a tout hazard le code... que je ne comprends qu’a moitié...

          Mais ce que je voulrais pouvoir faire c’est tester l’appelle du snippet... genre s’il le lit : affiche toto

          <?php
          /**
          * Gets the tags for the current page (if any are set),
          * from a specified tv and creates links to category pages
          * with an alias that is the same as the tag (only lower case
          * and without spaces).
          *
          * PHP versions 4 and 5
          *
          * @name       tagLinks
          * @category   Tagging/Blogging with Ditto for MODx
          * @author     Scotty Delicious <[email protected]>
          *             http://scottydelicious.com | http://piratemachine.org
          * @copyright  2007 Scotty Delicious
          * @license    http://www.gnu.org/copyleft/gpl.html GPL License 2.0
          * @version    1.0.5
          * @link       http://modxcms.com/
          * @see        http://scottydelicious.com/index.html
          * @since      File available since Release 1.0
          * @example    on a page: [[tagLinks? &tv=`tags` &separator=`, `]]
          * @example    ditto 2.0 tpl: [[tagLinks? &id=`[+id+]` &value=`[+tags+]` &separator=`, `]] with &hiddenFields=`tags` added to the Ditto call
          * @changes	  23-April-07: Trim all tags and url values to ensure page validitiy and compatibility with Ditto
          * 			  9-May-07: Allow for tv value to be passed to the snippet for performance when used within a looping snippet (e.g. Ditto)
          * 			  1.0.4: Allow a ModX Doc ID to be supplied as a path, instead of hard coding. Fixed error pointed out by Astronut on the forum regarding getTemplateVarOutput returning an array rather than a string 
          *			  1.0.5: Remove FAP parameter - using ModX API to generate the link takes care of this automatically. Respect Modx config value for XHTML URLs. Generate URLs better (use appropriate ? or &) - ncrossland
          * 
          * Parameters:
          * &id = document id to get tags for. default is
          *       current document.  When using this in a
          *       ditto tpl, use &id=`[+id+] to get the tags
          *       for the document being summarized.
          *
          * &tv = name of the template variable used for
          *       setting categories.
          *
          * &value = value of the tv if it has already
          *		been retrieved
          *
          * &delimeter = delimiter used in the tv.
          *       defaults to a comma ","
          *
          * &caseSensitive = remove tags that are the
          * 		same word but were written using different
          * 		cases. defaults to false.
          *
          * &label = Label listed before the list of links.
          *       defaults to "Categories: ".
          *
          * &separator = character to separate tag links.
          *       comma (,) or pipe (|) for example.
          *       defaults to '' (blank).
          *
          * &element = Element to wrap this in [div/span/p].
          *       defaults to "div".
          *
          * &style = CSS tag to apply to the &element.
          *       defualts to "taglinks".
          *
          * &format = format of the output for links. can be an
          *       anchor `a`, unordered list `ul`, or an ordered
          *       list `ol`
          *
          * &newline = add new line after each element.
          *       defaults to '1' (yes, add new lines).
          *       set to `0` and new lines will not be added.
          *
          * &path = path to your categories page. if your
          *       category pages are under "yoursite.url/blog/categories/",
          *       you would set &path=`blog/categories`. 
          *		Alternatively, supply a doc ID number, and it will
          * 		be converted to a path automagically.
          *
          ***************************************/
          
          /**
          * Set values for items that were not set in the
          * snippet call.
          */
          $page_id = isset($id) ? $id : $modx->documentObject['id'];
          $tv = isset($tv) ? $tv : '';
          $delimiter = isset($delimiter) ? $delimiter : ',';
          $label = isset($label) ? $label : 'Categories: ';
          $separator = isset($separator) ? $separator : '';
          $element = isset($element) ? $element : 'div';
          $style = isset($style) ? $style : 'taglinks';
          $format = isset($format) ? $format : 'a';
          $newline = isset($newline) ? $newline : '1';
          $path = isset($path) ? $path : '';
          $caseSensitive = isset($caseSensitive) ? $caseSensitive : 0;
          
          // If a numeric path is supplied, assume it is a modx page ID, so create a URL from it
          if (!empty($path) && is_numeric($path)) {
          	$path = $modx->makeUrl($path);	
          }
          
          // Do we need to make the URL ampersands XHTML compatible?
          $amp = $modx->config['xhtml_urls'] == '1'?'&':'&';
          
          /**
          * Get the tags from the TV the user supplied
          */
          if ($tv == '' && !isset($value)){return "No template variable for tags was declared.";}
          $get_tags = isset($value) ? $value : implode($delimiter,$modx->getTemplateVarOutput($idname=array($tv), $page_id, $published="1"));
          
          /**
          * Make an array of all the tags associated with the specified document.
          */
          $tags = array();
          $tvarray = explode($delimiter, $get_tags);
          foreach ($tvarray as $tag) {
          	if (!empty($tag)) {
          		if ($caseSensitive) {
          			$tags[trim($tag)] = trim($tag);
          		} else {
          			$tags[strtolower(trim($tag))] = trim($tag);
          		}
          	}
          }
          $tvarray = array_values($tags);
          $cnt = count($tvarray);
          
          /**
          * Build the URL
          */
          $url_seperator = (strpos($path, '?') === false)?'?':$amp;
          $doc_path = $path.$url_seperator.'tags=';
          
          
          /**
          * Remove new lines if &newline is set to `0`.
          */
          if ($newline == '1'){
          	$nl = "\n";
          } else {
          	$nl = '';
          }
          
          /**
          * Create the containing element (<div>, <span>, or <p>)
          * and give it the style declared in &style.
          */
          $link .= '<'.$element.' class="'.$style.'">'.$nl;
          
          /**
          * Create a series of HTML anchors with hrefs if &format
          * is set to `a`.
          */
          if ($format == 'a'){
          $link .= "$label";
          	for ($x=0;$x<$cnt;$x++) {
          		$url = urlencode(trim($tvarray[$x]));
          		$cnd_separator = ($x!=($cnt-1)) ? $separator : '';
          	   $link .= '<a href="'.$doc_path.strtolower($url).'">'.trim($tvarray[$x]).'</a>'.$cnd_separator.$nl;	
          	}
          } else {
          
          /**
          * Otherwise genereate a series of list items with a hrefs if &format
          * is set to ordered or unordered list.
          */
          	$link .= '<'.$format.'>'.$nl;
          	$link .= '<li class="'.$style.'_label">'.$label.'</li>'.$nl;
          	for ($x=0;$x<$cnt;$x++) {
          		$url = urlencode(trim($tvarray[$x]));
          		$cnd_separator = ($x!=($cnt-1)) ? $separator : '';
          	   $link .= '<li><a href="'.$doc_path.strtolower($url).'">'.trim($tvarray[$x]).'</a>'.$cnd_separator.'</li>'.$nl;
          	}
          	$link .= '</'.$format.'>'.$nl;
          }
          
          /**
          * Close the containing element.
          */
          $link .= '</'.$element.'>'.$nl;
          
          /**
          * If the array is empty (because no tags were attached to the document)
          * return nothing as to not disturb the page layout.
          */
          if ($tvarray['0'] == ''){
          	return;
          }else{
          
          /**
          * Otherwise return the links to the page!
          */
          return $link;
          }
          ?>
            • 6726
            • 7,075 Posts
            Inutile de poster le code du snippet, on peut le télécharger wink

            Question bête, mais qui aurait du être la première lorsque tu me dis qu’il n’affiche rien : as tu effectivement nommé ton snippet "tagLinks" (minuscules et majuscules IDENTIQUES) ?

            Tu ne serai pas le premier à faire une erreur de typo tongue

            Autre chose : à quel endroit se situe ton appel de snippet : dans un chunk, dans un template ?
            Car si c’est dans le chunk qui sert de template à Ditto il faut impérativement ajouter [tt]&id=`[+id+][/tt] dans ton appel de tagLinks
              .: COO - Commerce Guys - Community Driven Innovation :.


              MODx est l&#39;outil id
              • 3133
              • 98 Posts
              Inutile de poster le code du snippet, on peut le télécharger

              J’en ai pleinement conscience... néamoinsje pensais que se serait plus accessible pour le quidam qui a la patience de lire mon post.

              tagLinks est le nom exact de mon snipet "copy and past approuved"
              testé et retesté pour etre sur

              Autre chose : à quel endroit se situe ton appel de snippet : dans un chunk, dans un template ?

              J’avoue avoir essayé partout dans un chunk dans le content ... et je vois toujours rien page vide

              Quand a l’id par defaut il prends celui du doc en cours non?
              $page_id = isset($id) ? $id : $modx->documentObject['id'];


              enfin j’ai essayé en mettant des id ’fixe’ ... marche po non plus



              La je suis dépassé sad
                • 6726
                • 7,075 Posts
                Non non l’id par défaut est celle du doc en cours SEULEMENT si ton appel de snippet est dans un template ou un document mais PAS si il est dans le chunk qui sert de template à Ditto auquel cas il faut impérativement ajouter [tt]&id=`[+id+][/tt] dans ton appel de tagLinks

                Donc je répète la question où est ton appel de snippet wink ?
                  .: COO - Commerce Guys - Community Driven Innovation :.


                  MODx est l&#39;outil id
                  • 3133
                  • 98 Posts
                  Ba dans un premier temps... pour tester le bouzin je l’ai placé dans le content de mon document ... persuadé avoir le retour des tags cochés pour ce meme document... bon ba inutile de te dire que c’est pas le cas sad
                    • 6726
                    • 7,075 Posts
                    Dans ce cas je ne vois pas ce que ça peut être à part un problème de cache éventuellement...
                    N’ayant pas encore testé tagLinks, je ne peux pas en dire plus...
                      .: COO - Commerce Guys - Community Driven Innovation :.


                      MODx est l&#39;outil id
                      • 3133
                      • 98 Posts
                      Tiens, j’ai pas pensé au cache mais j’ai essayé [!...!] avec le meme resultat!

                      Merci pour ta patience smiley

                      finalement faudrait quelqu’un qui l’aurait testé et chez qui ca marche!..

                      Celon toi il y aurait un autre moyen d’obtenir ce resultat = Tags: Modx, Snippet