Ajax pour dotclear
Par Olivier Meyer le jeudi, 11 octobre 2007, 22:42 - Dotclear - Lien permanent
Ma modeste contribution à dotclear : une petite extension ajax d'aide à la saisie de tags (autocomplétion). Quand on fait une requête dans le moteur de recherche, l'extension va afficher les tags automatiquement plus le nombre d'occurences de ce tag dans le blog et la ou les catégories dans lesquelles on trouve ce tag.
Cette extension trouve son intérêt surtout pour les blogs bien nourris et qui utilisent les tags sans modération (celui-ci est le parfait contre-exemple : tout juste 20 posts...).
Pour tester, taper par exemple "a" dans le champ de recherche.
Adaptation de l'excellent "Ajax autosuggest" de BrandSpankingNew. J'ai décidé de lier cette extension aux thèmes (il s'agit d'interface et non d'une fonctionnalité touchant le coeur de dotclear).
Installation :
- Télécharger cette archive et la décompresser dans le répertoire /themes de dotclear.
Votre répertoire themes doit désormais contenir un répertoire "ats" qui contient :
- un répertoire "img_inquisitor"
- un fichier "autosuggest_inquisitor.css"
- un fichier "bsn.AutoSuggest_c_2.0.js"
- un fichier "tagsXml.php" - Copier ces lignes en fin du fichier _head.html de votre thème :
<script type="text/javascript" src="themes/ats/bsn.AutoSuggest_c_2.0.js"></script><link rel="stylesheet" href="themes/ats/autosuggest_inquisitor.css" type="text/css" media="screen" charset="utf-8" />
- Copier ces lignes en fin du fichier _footer.html de votre thème :
<script type="text/javascript">
var options_xml = {
script:"themes/ats/tagsXml.php?",
varname:"input"
};
var as_xml = new AutoSuggest('q', options_xml);
</script>
On peut facilement la mettre au couleur de son blog en modifiant la feuille de style.








Commentaires
hello, merci pour ton plugin. mais je ne peux pas poster de commentaire. Tu as un pb avec ton filtre antispam dotclear... Sinon, serait il possible de prévoir une version pour les personnes n'ayant MySLQi dispo ? mon MySQL est < à 4.1.3 Par avance merci
effectivement j'ai un souci avec les filtres de spam. Je poste donc les commentaires par l'admin (reçus via form de contact) en attendant que ce soit réparé.
mysqli doit marcher à partir de la 4.1... En essayant avec mysql_connect et mysql_select_db ?
Le plugin packager te permet de faire des paquetages des plugins : à télécharger ici : http://callmepep.org/bricoland/ Pourquoi utiliser un code à base de = new mysqli() ? Dotclear a déjà une connexion à la base de données (MySQL ou PostgreSQL), c'est l'objet . J'ai écrit une documentation à ce sujet : http://gniark.net/blog/tag/documentation Elle n'est pas parfaite mais tu devrais tout comprendre puisque tu sais faire une requête SQL. Et ainsi tu pourrais créer un plugin compatible MySQL et PostgreSQL. Au lieu de faire require_once('../../inc/config.php'); tu devrais essayer d'appeler le fichier /dotclear/inc/prepend.php qui t'ouvre la connexion et l'accés au blog. Mais je suis pas sûr que ça fonctionne pour une page seule comme la tienne.
Merci pour l'url du packager. J'avoue que j'ai fait cette extension sans trop me soucier des conventions de codage dotclear, l'ayant pensée au départ pour installation dans un thème. Ceci dit si j'avais connu ce package j'aurais peut-être fait un plugin directement.
Je vais essayer de proposer un "vrai" plugin, avec un code plus propre, dès que j'aurai un peu de temps.
Les commentaires fonctionnent à nouveau (après réinstallation DC).
Pfffiouuuu... :-)
Sympathique. :) Aucune chance que se soit porté vers dotclear 1.x? Aussi, est ce qu' ajax permettrait d'afficher le contenu d'un post après avoir cliqué sur "lire la suite" sans avoir à reloader la totalité de la page? (c'est pas vraiment en rapport avec ton plugin, mais bon, tu m'as l'air bien placé pour répondre :p)
Je pense que ca peut être porté facilement vers dotclear 1X, je ne sais pas comment sont gérés les tags (à vérifier). Pour ta question, le plus simple est je pense de publier ton message en entier dans la partie "contenu" du billet (ne rien publier dans "extrait"), et de mettre la partie à afficher ou à cacher dans un <div>, que tu affiches ou caches <a href="javascript:;" onClick="afficheDiv()">Lire la suite</a>.
Ajax permettrait effectivement de faire ce que tu souhaites mais avec des développements plus importants.