[5.0] Auto-complétion des tags

Avec la nouvelle version de Pluxml il est désormais possible d'ajouter des tags à ses articles.
Mais comme vous pouvez le concevoir il est impossible de retenir tous les tags que l'on a déjà mis à ses précédents articles, c'est pourquoi j'ai eu l'idée d'ajouter l'auto-complétion des tags lorsque que vous les taper.
Pour cela nous allons utiliser jQuery et sont pendant jQuery UI. Tout d'abord il faut éditer le fichier top.php situer dans votre-pluxml/core/admin/, d'ajouter ce code php après la 1ère ligne :
# Gestion de la suggestion des tags
	$taglist = '';
	$array = array();
	# On verifie qu'il y a des tags
	if($plxAdmin->aTags) {
		# On liste les tags sans créer de doublon
		foreach($plxAdmin->aTags as $arraytag) {
			if($arraytags = array_map('trim', explode(',', $arraytag['tags']))) {
				foreach($arraytags as $tag) {
					if($tag!='') {
						if(!isset($array[$tag]))
							$array[$tag]=1;
						else
							$array[$tag]++;
					}
				}
			}
		}
	}
	# On affiche la liste
	foreach($array as $tagname => $nbtags) {
		$taglist .= '"'.$tagname.'",';
	}
Une fois ce code ajouter il faudra ajouter avant la ligne <?php if(method_exists($plxAdmin->editor, 'addHeader')) $plxAdmin->editor->addHeader(); ?> ce code :
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script>
	<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/base/jquery-ui.css" media="screen" />
	<script type="text/javascript">
		$(function() {
			var availableTags = [<?php echo substr($taglist, 0, -1); ?>];
			function split(val) {
				return val.split(/,\s*/);
			}
			function extractLast(term) {
				return split(term).pop();
			}
			
			$("#id_tags").autocomplete({
				minLength: 0,
				source: function(request, response) {
					response($.ui.autocomplete.filter(availableTags, extractLast(request.term)));
				},
				focus: function() {
					return false;
				},
				select: function(event, ui) {
					var terms = split( this.value );
					terms.pop();
					terms.push( ui.item.value );
					terms.push("");
					this.value = terms.join(", ");
					return false;
				}
			});
		});
	</script>
Avec pour résultat :
autocompletion.png

Réponses

  • Merci pour cet ajout. Il est en effet tres pratique a l'usage.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Excellent !

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut
    ça me semble un peu tiré par les cheveux car avec un peu de bon sens je ne vois pas l'intérêt de lister les mots de l'article pour choisir des tags. Quand on rédige un article complet, on est plus à 2 ou 3 mots près. Faut pas chercher à tout automatiser.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Woaw t'as eu une pelle en début d'année pour déterrer un post de 2010 ;)

    Sinon je trouverais cool que lorsque l'on tape un tag dans le champ de saisie il nous propose dans une liste ceux qui commencent par les même caractères.

    +
    +
    | Ta....................|
    +
    +
    | Table................|
    | Tableau............|
    | Table.en.bois...|
    +
    +

    Les . servent d'espace sur le forum
  • à mon tour de déterrer :D

    je trouve qu'un simple champ input va bien pour 2-3 mots simples,
    mais dès qu'on en a plus, c'est une horreur à gérer.
    Un textarea serait plus approprié. A savoir s'il faut le changer en JS/CSS ...
Connectez-vous ou Inscrivez-vous pour répondre.