De: fredomkb@free.fr
Objet: Rép : [Spip] Plusieurs parametres de BALISE
Date: 7 mai 2007 04:43:45 GMT+02:00
À: spipcarto@gmail.com
Bonjour Spipcarto, et pardon pour cette réponse aussi tardive, je n'avais pas vu ton dernier message...
Le 30 avr. 2007, à 13:41, spipcarto a écrit :
Fredo Mkb a écrit :
Oui, à te lire ça semble enfantin, mais je n'ose pas encore franchir le
pas, car j'ai beaucoup d'interrogations et lacunes quant à la manière
de bien concevoir et réaliser un tel projet...
J'attends encore de trouver quelque part un vrai didacticiel, qui
aborde la conception et la réalisation d'un plugin pas à pas, étape par
étape, et qui propose des explications claires couplées à des exemples
pratiques... bref, le Saint-Graal de la doc quoi 
Si il n'y a pas un bouqin ecrit la dessus, c'est peut etre parce que ca
n'en merite pas un...
Oui, peut-être pas un bouquin, mais un tuto ou didacticiel qui aborderait cette question de manière évolutive, jusqu'à un niveau plutôt avancé, ce ne serait pas du luxe à mon avis, au vu des avantages et personnalisations diverses que les plugins peuvent apporter aux sites sous Spip.
1)créer un fichier plugin.xml :
<plugin>
<nom><multi>Nom du plugin</nom>
<auteur>toi et la licence / le copyright(peut etre multi)</auteur>
<version>0.1</version>
<etat>test</etat>
<description>
<multi>[fr]blablabla [en]blebleble</multi>
</description>
<prefix>nomduplugin</prefix>
<fonctions>nomduplugin_fonction.php</fonctions>
<chemin dir='' />
</plugin>
2) mettre ton filtre ou ta balise dans un fichier
nomduplugin_fonction.php (ici à la racine de ton plugin, à coté du
plugin.xml)
3)mettre ca dans /plugins/nomduplugin/
4) activer le plugin
Le mieux, c'est de prendre l'habitude de prefixer les noms des fichiers
et des fonctions pour eviter les collisions entre plugins
Ok ok... encore une fois, en te lisant ça paraît enfantin à faire, et à ce niveau, il est vrai que c'est à la porté de presque tout le monde, mais...
Et oui, il y a un "mais", ou plusieurs devrais-je dire, car, ce que tu présentes là est pratiquement ce qu'on trouve dans les quelques docs en ligne qu'on arrive à dénicher (trop peu à mon goût)...
Mais, si on a quelques questions, ou si on désire aller plus loin que ton exemple, on est coincé, en tout cas les petits bidouilleurs du dimanche comme moi, qui ne sont pas des vrais développeurs, et qui, tant bien que mal, tentent de faire de petites choses, sont rapidement bloqués en absence de toute documentation digne de ce nom...
Par exemple, on ne trouve nulle part des explications sur les quelques points suivants (en vrac et non exhaustif) :
- Comment organiser le répertoire du plugin et quelles sont les contraintes à respecter ?
- Quelles sont les conventions d'écriture, de nommage et de développement à respecter ?
- Comment localiser un plugin, ou comment produire un code capable de supporter les sites multilingues ?
- Comment interroger la base de données et utiliser ces données dans le plugin ?
- Comment associer une ou plusieurs balises personnalisées au plugin ?
- Comment, et sous quelles conditions, utiliser les variables globales de Spip ?
- Comment utiliser les modèles dans un plugin ?
- Comment appliquer le plugin sur un objet ou sur des données non prévues par les pipelines ?
- Comment faire pour afficher une page de configuration sur la partie privée ?
- Comment faire pour mémoriser des options de configuration choisies par l'utilisateur ?
- Comment intégrer et utiliser des codes JavaScrip, Ajax et/ou Css avec les plugins ?
- Comment profiter et utiliser les solutions techniques déjà intégrées à Spip ? (inutile de réinventer la roue)
- Quelles solutions adopter pour améliorer l'intégration et les performances du plugin ?
Evidemment, j'en ai d'autres, certaines peut-être un peu "bêtes" pour les spécialistes, et d'autres bien plus complexes, mais bon, avoue qu'il n'y a pas de doc sur ces sujets, pourtant, en clarifiant ces quelques questions, avec des explications et des exemples clairs, ça peu déjà pas mal aider les uns et les autres à évoluer...
Je ne sais pas combien de temps j'ai passé à regarder et étudier comment d'autres s'y sont pris, "il n'y a rien de mieux que voir comment les autres font pour apprendre" paraît-il, mais ce n'est pas évident, car on ne peut pas dire que tout le monde utilise les mêmes schémas, la même architecture, les mêmes techniques, etc...
Et puis, on trouve un peu de tout, du plugin super simple en quelques fichiers (ce qui n'enlève rien à son efficacité), et d'autres à ce point perfectionnés et complexes, qu'un oeil néophyte comme le mien s'y perd dès la première page de code affichée...
Enfin, ce qui manque, ou que je n'ai pas su trouver, c'est un petit "guidline", expliquant ce qu'on peut faire et ce qui est interdit, ce qu'on doit faire et ce qu'il n'est pas conseillé d'envisager... bref, un mini guide à l'attention des développeurs de plugins, balises, etc.
Pour conclure, je dirais que je me sens un peu frustré, car j'ai envie d'apprendre et évoluer et, pourquoi pas, arriver à réaliser et proposer à la communauté mes propres petits projets, mais là, ça devient pratiquement impossible lorsqu'on ne maîtrise pas les subtilités du développement sous Spip, on y perd beaucoup trop de temps à essayer de comprendre comment les autres ont fait, alors qu'un ou deux didacticiels bien sentis, avec des pas-à-pas clairs et des exemples pratiques, pourraient aider pas mal de personnes, qui seraient dans mon cas de figure, à concrétiser leurs idée et à enrichir les outils compatibles avec Spip, pour le plus grand bénéfice de l'ensemble de la communauté d'utilisateurs... non ?
une balise c'est plus compliqué car il faut faire du code qui produit du
code, et on se fait vite piégé sur les quotes.
Pour comprendre comment ca marche, la balise #EDIT du plugin crayons est
un bon exemple
(...)
Ha d'accord, c'est intéressant, du coup, on peut dire que la balise est
déjà connue de Spip, puisque chargée à la compilation, avant qu'elle ne
soit utilisée dans le squelette, tandis que le filtre reste inconnu de
Spip tant qu'il n'est pas trouvé dans le squelette... c'est bien ça ?
non, le filtre et la balises sont de toutes facons chargés à la
compilation du squelette et à son execution (au rechargement du cache).
Par contre, ils n'ont pas à etre chargés quand la page vient du cache.
Ok, merci beaucoup pour ces précisions, c'est un peu plus clair désormais...
Je vais regarder cette balise #EDIT, en espérant comprendre quelque chose... 
Fournir directement la fonction ?
Sous forme de filtre tu veux dire ?
oui, en gros, la balise va générer du code qui sera dans le squelette
compilé (pour les champs, c'est un simple appel à la variable dans la
pile) alors qu'avec un filtre, l'appel de la fonction sera dans le
squelette compilé (avec comme premier parametre la balise, cad la
variable dans la pile) et la fonction dans un xxx_fonctions.php qui sera
chargé.
Au niveau perf, c'est quasi pareil (sauf à multiplier les fichiers et le
path, ce qui in fine ralentira tout le Spip), alors pourquoi se prendre
la tete à generer ce code, autant charger la fonction et l'appeler comme
filtre.
Oui bon... là, tu vois, on arrive vite à la limite des choses que je peux comprendre, c'est dire si mon niveau est pour le moins modeste, pour ne pas dire carrément faible... j'espère pouvoir un jour relire cette phrase et la comprendre du premier coup... (y'a du boulot, je sais 
Disons que mon développement actuel n'est pas, pour ainsi dire, un
petit filtre qui pourrait facilement s'intégrer dans un plugin
multifonctions, mais il mériterait, àmha, d'exister comme une
contribution autonome...
A discuter sur spip-zone ca ...
elle fait quoi cette fonction ?
Suivant le conseil amical et sous l'impulsiion de quelques personnes, dans les forums d'échange du squelette MiniGriSpip, il est fort probable que je propose mon projet sur la Spip-Zone dans les semaines qui viennent, car je tente de le faire évoluer en lui ajoutant quelques fonctionnalités et en améliorant quelques autres... mais n'ayant pas suffisamment de temps, et mes compétences étant bien trop limitées, il serait peut-être bon que ce projet puisse bénéficier du savoir-faire des spécialistes de la Spip-Zone...
Enfin, on verra dans les prochaines semaines...
En tout cas, merci beaucoup Spipcarto pour tes messages, les uns plus instructifs que les autres, et encore désolé pour cette réponse tardive...
À bientôt 
PS. Je viens de me rendre compte que j'ai fais une fausse manipe et que je t'ai envoyé ce message en privé... donc le voici sur la liste, pour ne pas priver d'autres colistiers de ma réponse sur cet échange instructif... à+ 
--
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)