[5.0] Auto-complétion des tags
fightsoul
Member
dans Modifications
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 :
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 :Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
ç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 et développeur de PluXml (2010 à 2018)
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
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 ...