Dotclear

Vous n'êtes pas identifié(e).

Annonce

#1 2008-11-24 11:03:22

keul
Membre
Inscription : 2008-09-17

Plugin ArchiveWidget

Bonjour,

Vu que le gestionnaire de plugins de dotaddict est toujours en refonte, je poste mon plugin ici:

Il s'agit d'un widget qui permet d'afficher les archives de manière personnalisée:
année, mois, nombre de commentaires, pré-rempli par défaut.

Téléchargement : http://fichiers.keul.fr/dotclear/archiveWidget_1.0.zip

Le code est assez simple, et peut être utile à ceux qui chercheraient à savoir comment coder un plugin.

Merci de poster vos commentaires et problèmes rencontrés ici, ou de me les envoyer par mail à: keul at keul point fr.

Hors ligne

#2 2008-11-24 11:47:05

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Plugin ArchiveWidget

Bonjour keul. Il y a un fil « intérimaire » sur le forum pour annoncer ses plougs, tu veux bien y reporter les infos ?


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

#3 2008-11-24 11:57:02

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

C'est fait. Je laisse ce fil pour le support.

Hors ligne

#4 2008-11-27 10:44:30

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

Modifications mineures:
Nouvelle URL de téléchargement:
http://fichiers.keul.fr/dotclear/archiveWidget_v1.1.zip

Hors ligne

#5 2008-11-28 10:53:33

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : Plugin ArchiveWidget

Comme Olivier te l'a déjà fait remarquer, ton plugin est uniquement en français.

Plutôt que d'utiliser str_replace(), tu peux utiliser une fonction de PHP très pratique : sprintf()

À la ligne 29 de _public.php, c'est normal que le <li> ne soit pas fermé ?

Tu as écrit "Licence GNU GLP" au lieu de GPL.

Hors ligne

#6 2008-11-28 12:37:43

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

Moe a écrit :

Comme Olivier te l'a déjà fait remarquer, ton plugin est uniquement en français.

Y'a pas de documentation expliquant comment faire des plugins multilangues.
En plus, il me semble qu'il y a 2 méthodes pour la traduction, je dois utiliser laquelle?

Moe a écrit :

Plutôt que d'utiliser str_replace(), tu peux utiliser une fonction de PHP très pratique : sprintf()

T'a pas bien vu le fonctionnement du plugin toi :)

Moe a écrit :

À la ligne 29 de _public.php, c'est normal que le <li> ne soit pas fermé ?

C'est corrigé, merci :)

Moe a écrit :

Tu as écrit "Licence GNU GLP" au lieu de GPL.

Et je 'lai fait sur TOUS mes plugins avec un copier collé... T_____T

Hors ligne

#7 2008-11-28 17:58:33

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : Plugin ArchiveWidget

keul a écrit :

Y'a pas de documentation expliquant comment faire des plugins multilangues.

Dans ce cas, regarde comment font les autre plugins. J'utilise Poedit pour générer le fichier .po, c'est simple et efficace.

keul a écrit :

T'a pas bien vu le fonctionnement du plugin toi :)

Si, il me semble que printf() sera plus rapide que str_replace().

Hors ligne

#8 2008-11-28 19:14:35

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

Moe a écrit :

Si, il me semble que printf() sera plus rapide que str_replace().

Bah, fais le, tout en gardant toutes les fonctionnalités de mon plugin.
Je suis curieux de voir le code que tu va nous faire, enfin, comment tu compte procéder quoi :)

Hors ligne

#9 2008-11-28 19:53:13

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Plugin ArchiveWidget

>keul : ce n'est à mon avis pas le ton à employer envers quelqu'un qui tente de t'aider d'une part, et qui est d'autre part un modérateur de ce forum

Et oui, je sais, le fond et la forme, tout ça, mais la forme c'est important quelquefois ;)

Hors ligne

#10 2008-11-28 20:30:01

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : Plugin ArchiveWidget

keul a écrit :

Bah, fais le, tout en gardant toutes les fonctionnalités de mon plugin.
Je suis curieux de voir le code que tu va nous faire, enfin, comment tu compte procéder quoi :)

Comme ça : http://gniark.net/dotclear-files/public … alpha1.zip

Il te reste à corriger les erreurs XHTML : il y a des balises mal ouvertes ou fermées d'après le validateur W3C.

Merci de veiller sur moi amalgame. :)

Edit : je viens de me souvenir qu'il existait déjà un plugin affichant les archives par mois : http://joel.carolinegutle.net/dotclear/ … /Jarchives

Dernière modification par Moe (2008-11-28 20:32:55)

Hors ligne

#11 2008-11-29 01:54:56

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

Entre
%1$s = URL, %2$s = year, %3$s= month, %4$s = comments number
et
%url=URL, %year=année, %month=mois, %number=nombre de commentaires
y'a une belle différence de lecture.

Donc, certes, printf est plus rapide, mais ne conviens pas à mes %year & co, donc NON printf ne conviens pas à mon plugin.
à a rigeure, il me faudrait un système qui convertisses le %year en %2$s et qui le garde en cache dans les paramètres du widget avant qu'il ne sois utilisé par la page.

Tiens, je viens de voir que le plugin dcom utilise ta solution par contre.

Edit : je viens de me souvenir qu'il existait déjà un plugin affichant les archives par mois : http://joel.carolinegutle.net/dotclear/ … /Jarchives

Pas listé sur dotaddict, donc difficile de savoir si le plugin existe déjà ou pas.

Hors ligne

#12 2008-11-29 02:42:03

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : Plugin ArchiveWidget

keul a écrit :

à a rigeure, il me faudrait un système qui convertisses le %year en %2$s et qui le garde en cache dans les paramètres du widget avant qu'il ne sois utilisé par la page.

C'est une bonne idée.

Hors ligne

#13 2008-11-29 12:42:58

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

http://www.simplemachines.org/community … c=175031.0

Donc, on a grossomodo sprintf qui est 1 à 2 fois plus rapide que str_replace (et je parle pas de strtr qui est 60fois plus lent que sprintf).

Sur un blog de 5ans, on aurais:
60 str_replace (avec 120 définition de tableau)
60 sprintf
qui sont executés

fonction	exec en 1sec	temps d'1 exe (µs)	temps de 60 exe (µs)
sprintf	92838		10,771451		646,2870807
str_replace #1	69654		14,356677		861,4006374
str_replace #2	58016		17,236624		1034,197463
preg_replace	42444		23,560456		1413,627368
strtr		1786		559,910414		33594,62486

Mon script fait perdre presque une demi miliseconde de génération de page pour rendre le motif plus lisible

Si j'arrive à convertir le str_replace en sprintf une seule fois dans le code et pas 60 fois, je devrais ne perdre plus que 7µs

Hors ligne

#14 2008-11-29 13:31:34

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

Hors ligne

#15 2008-11-29 13:35:48

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : Plugin ArchiveWidget

keul a écrit :

Si j'arrive à convertir le str_replace en sprintf une seule fois dans le code

C'est assez aisé pour un plugin mais pour un widget toutes les fonctions d'enregistrement sont intégrées et on ne pourra pas les modifier. Tu peux garder ton plugin comme avant, tant pis pour les performances, la différence n'est pas dramatique.

Hors ligne

#16 2008-11-29 13:40:08

Moe
Responsable du mini-bar
Lieu : France
Inscription : 2004-09-19
Site Web

Re : Plugin ArchiveWidget

Dans ta nouvelle version, tu utilises 2 str_replace ET sprintf ? Je suis pas sûr que ça soit plus rapide d'utiliser les 2 fonctions.

Tu peux ajouter un changement de ma version : définir une classe pour le widget (indispensable pour styler le widget)

Hors ligne

#17 2008-11-29 14:03:33

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

mon str_replace est hors de la boucle while qui tourne n fois le nombre de mois du blog.
Si sprintf est 2 fois plus rapide que str_replace,  2 mois d'archives suffisent à rendre le code plus optimisé.
De plus, dans str_replace, je doit à chaqun de ses appels envoyer deux tableaux des éléments à remplacer/remplacés.

J'ai ajouté la classe.
Je m'occuperai de rendre mes plugins multilingues dans la soirée.

Hors ligne

#18 2008-12-04 12:47:19

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

Nouvelle version 1.3
http://fichiers.keul.fr/dotclear/archiveWidget_v1.2.zip

ATTENTION: CHANGEMENT DU NOM DES VARIABLES
%url=URL, %year=année, %month=mois, %number=nombre
remplacés par
%1$s = URL, %2$s = year, %3$s= month, %4$s = comments number
(ouais, on paramètre mon plugin une fois par an, donc en effet, l'optimisation de Moe à plus de sens, et encore merci à lui.)

Sinon, j'ai ajouté le support des langues avec l'anglais en plus dans cette V1.3

Hors ligne

#19 2010-07-05 22:30:46

keul
Membre
Inscription : 2008-09-17

Re : Plugin ArchiveWidget

Hors ligne

#20 2011-11-17 08:08:25

expertix
Membre
Inscription : 2010-02-23

Re : Plugin ArchiveWidget

J'ai une question sur le plugin Archive (que je trouve au passage très utile, pourquoi ne pas l'avoir intégré dans Dotclear 2.4 ?)

Comment paramétrer la page de résultats, afin de faire apparaître non pas uniquement la date et le titre du post, mais l'intégralité des articles postés sur le mois choisi (comme lorsqu'on clique sur un tag par exemple) ?
Merci pour votre retour

Hors ligne

#21 2011-11-17 08:42:24

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Plugin ArchiveWidget

Bonjour,

expertix a écrit :

Comment paramétrer la page de résultats, afin de faire apparaître non pas uniquement la date et le titre du post, mais l'intégralité des articles postés sur le mois choisi (comme lorsqu'on clique sur un tag par exemple) ?

La réponse est qu'il faut modifier le fichier template archive_month.html du thème actif comme décrit dans ce topic.

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map