[SPIP Zone] Débuter un plug-in

Bonjour,

J'aimerais réaliser un plug-in à titre d'entraînement. J'ai lu tout doc.spip.org, divers articles à droite à gauche, et regardé certains plug-in existants. Tout cela me fait dire que réaliser un plug_in n'a pas l'air terriblement compliqué techniquement, mais par contre, c'est vraiment la jungle pour connaître la méthode, les bonnes pratiques, les variables qui comptent.

Concrètement, une fois que j'ai posé sur papier ce que devait faire mon plug in, y'a-t-il une doc ou qqch qui puisse me servir pour connaître les variables dont je peux me servir pour modifier les menus, les fonctions que je dois appeler pour créer mes pages, l'organisation que je dois adopter et la nomenclature ?

J'ai installé un SPIP 2,0,0 Beta 2, et fais quelques tests. par exemple si je respecte la nomenclature donnée par doc.spip.org pour les actions, ca ne fonctionne pas. Quand je regarde dans Agenda 2, il y a encore un répertoire inc, qui n'est pas indiquée dans l'arborescence de base d'un plug in. (y'a déjà action et exec pour stocker les fonctions... ca ne suffit pas ?). Je pense qu'une fois que j'aurais la méthode, je serai plus à l'aise pour progresser tout seul, mais pour le moment, je rame sévère à la recherche de maigres indices ca et là.

Si vous avez un lien A JOUR qui décrit correctement le fonctionnement de SPIP 2.0 ou les éléments de construction d'un plug-in (autres que des bribes non vérifiées ou périmées), je serai extrêmement preneur !

Merci,

FX

Bonjour FX,

Tout d'abord, bienvenue,

Ce que tu demandes est l'expression d'une requete de plus en plus fréquente qui montre un manque évident de ce côté là et une envie d'implication de développeurs dans ce projet.

Je serais particulièrement intéressé pour écrire des choses dessus, mais je manque de temps ou d'argent :p.

Bref il n'existe pas de documentation à jour, parfaite, exaustive, minutieuse concernant les plugins ou les fonctions php essentielles de SPIP.

doc.spip.net est une approche, à compléter, mais ce sujet (création de plugins, utilisation avancée de SPIP 2), nécessiterait un livre à lui tout seul !

Donc, en attendant, la meilleure façon est de lire les codes des plugins en essayant de les comprendre, ce qui est effectivement très long et complexe au debut si l'on est pas familier au moteur SPIP. Mais surtout, pour tout ceux qui le peuvent, rendre compte de leur expertise en écrivant des articles sur le sujet.

---------

Pour les différents répertoires, un plugin reprend simplement les répertoires de SPIP, qui sont à la racine, ou dans ecrire/.

Pour schématiser :
- action = actions sur la base de donnée,
- exec = gestion de l'affichage (appelle des fonctions de inc/presentation.php ou compile des squelettes contenus dans /prive)
- inc = hum... j'ai plus de mal à le définir (help me ?!) : jeu de fonctions diverses,
- public : ce qui concerne la compilation des squelettes (boucles, critères, balises)
- base : ce qui concerne le schéma de la bdd et les mises à jour
- balise : declaration de balises dynamiques (recalculées à chaque affichage de la page)
- formulaires : ce qui concerne les formulaires...
...

Tu dis à un moment : "si je respecte la nomenclature donnée par doc.spip.org pour les actions, ca ne fonctionne pas."

Peux tu donner un lien ? et expliquer ce qui ne fonctionne pas déjà ?

Chaleureusement,

MM.

FX a écrit :

Bonjour,

J'aimerais réaliser un plug-in à titre d'entraînement. J'ai lu tout doc.spip.org, divers articles à droite à gauche, et regardé certains plug-in existants. Tout cela me fait dire que réaliser un plug_in n'a pas l'air terriblement compliqué techniquement, mais par contre, c'est vraiment la jungle pour connaître la méthode, les bonnes pratiques, les variables qui comptent.

Concrètement, une fois que j'ai posé sur papier ce que devait faire mon plug in, y'a-t-il une doc ou qqch qui puisse me servir pour connaître les variables dont je peux me servir pour modifier les menus, les fonctions que je dois appeler pour créer mes pages, l'organisation que je dois adopter et la nomenclature ?

J'ai installé un SPIP 2,0,0 Beta 2, et fais quelques tests. par exemple si je respecte la nomenclature donnée par doc.spip.org pour les actions, ca ne fonctionne pas. Quand je regarde dans Agenda 2, il y a encore un répertoire inc, qui n'est pas indiquée dans l'arborescence de base d'un plug in. (y'a déjà action et exec pour stocker les fonctions... ca ne suffit pas ?). Je pense qu'une fois que j'aurais la méthode, je serai plus à l'aise pour progresser tout seul, mais pour le moment, je rame sévère à la recherche de maigres indices ca et là.

Si vous avez un lien A JOUR qui décrit correctement le fonctionnement de SPIP 2.0 ou les éléments de construction d'un plug-in (autres que des bribes non vérifiées ou périmées), je serai extrêmement preneur !

Merci,

FX

--
MM.

Bonsoir FX,

Une recherche "réaliser plugin spip" me donne ce lien sur le site de
documentation spip.net :

http://www.spip.net/fr_article3448.html

Et il y en a plein d'autres comme ça :wink: Et comme le dit très bien
Matthieu il va te falloir "lire du code".

++
b_b

Le 14 novembre 2008 21:50, FX <fxguillois@gmail.com> a écrit :

Bonjour,

J'aimerais réaliser un plug-in à titre d'entraînement. J'ai lu tout
doc.spip.org, divers articles à droite à gauche, et regardé certains plug-in
existants. Tout cela me fait dire que réaliser un plug_in n'a pas l'air
terriblement compliqué techniquement, mais par contre, c'est vraiment la
jungle pour connaître la méthode, les bonnes pratiques, les variables qui
comptent.

Concrètement, une fois que j'ai posé sur papier ce que devait faire mon plug
in, y'a-t-il une doc ou qqch qui puisse me servir pour connaître les
variables dont je peux me servir pour modifier les menus, les fonctions que
je dois appeler pour créer mes pages, l'organisation que je dois adopter et
la nomenclature ?

J'ai installé un SPIP 2,0,0 Beta 2, et fais quelques tests. par exemple si
je respecte la nomenclature donnée par doc.spip.org pour les actions, ca ne
fonctionne pas. Quand je regarde dans Agenda 2, il y a encore un répertoire
inc, qui n'est pas indiquée dans l'arborescence de base d'un plug in. (y'a
déjà action et exec pour stocker les fonctions... ca ne suffit pas ?). Je
pense qu'une fois que j'aurais la méthode, je serai plus à l'aise pour
progresser tout seul, mais pour le moment, je rame sévère à la recherche de
maigres indices ca et là.

Si vous avez un lien A JOUR qui décrit correctement le fonctionnement de
SPIP 2.0 ou les éléments de construction d'un plug-in (autres que des bribes
non vérifiées ou périmées), je serai extrêmement preneur !

Merci,

FX
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Je serais particulièrement intéressé pour écrire des choses dessus, mais je manque de temps ou d'argent :p.

Si tu as déjà la connaissance, tu as déjà l'essentiel, parce que même si j'ai du temps ou de l'argent, je ne peux pas écrire sur les plugin :wink:

Donc, en attendant, la meilleure façon est de lire les codes des plugins en essayant de les comprendre, ce qui est effectivement très long et complexe au debut si l'on est pas familier au moteur SPIP. Mais surtout, pour tout ceux qui le peuvent, rendre compte de leur expertise en écrivant des articles sur le sujet.

Où vaut-il mieux proposer ces articles justement ? SPIP contrib ? doc.spip.org ? ailleurs ?

Sinon est ce que je peux me permettre de poser des questions "de newbie" sur cette liste, ou est ce que ca va agacer ?

- action = actions sur la base de donnée,

Pour moi c'est l'équivalent des modèles dans le design pattern MVC, donc ca je pense voir ce que je dois y mettre.

- exec = gestion de l'affichage (appelle des fonctions de inc/presentation.php ou compile des squelettes contenus dans /prive)

ta description me laisse pantois. :slight_smile:

- inc = hum... j'ai plus de mal à le définir (help me ?!) : jeu de fonctions diverses,

en gros, fourre tout qu'on a pas pu mettre ailleurs ? dans ce cas pourquoi beaucoup de plugin persistent à les utiliser ?

- public : ce qui concerne la compilation des squelettes (boucles, critères, balises)

ok

- base : ce qui concerne le schéma de la bdd et les mises à jour

ok

- balise : declaration de balises dynamiques (recalculées à chaque affichage de la page)

je pense pas que je vais utiliser tout de suite, mais ok :wink:

- formulaires : ce qui concerne les formulaires...

comme le port salut !

...

Tu dis à un moment : "si je respecte la nomenclature donnée par doc.spip.org pour les actions, ca ne fonctionne pas."

Peux tu donner un lien ? et expliquer ce qui ne fonctionne pas déjà ?

http://doc.spip.org/@Plugin-xml

Passage mis en cause :
"Les scripts sont de la forme action_plugin_fonction_dist() avec :

* action : préfixe de fonction imposé
* plugin : le nom du plugin utilisant l’action
* fonction : un nom de fonction
* dist : ceci n’est pas obligatoire mais offre la possibilité d’une surcharge

Le fichier associé sera action/plugin_fonction.php"

Le préfixe de fonction imposé en fait n'est pas imposé du tout, si on le met, ca ne marche tout simplement pas.

Merci pour ta réponse rapide et détaillée !

FX

2008/11/15 FX <fxguillois@gmail.com>

Peux tu donner un lien ? et expliquer ce qui ne fonctionne pas déjà ?

http://doc.spip.org/@Plugin-xml

Passage mis en cause :
"Les scripts sont de la forme action_plugin_fonction_dist() avec :

  • action : préfixe de fonction imposé
  • plugin : le nom du plugin utilisant l’action
  • fonction : un nom de fonction
  • dist : ceci n’est pas obligatoire mais offre la possibilité d’une surcharge

Le fichier associé sera action/plugin_fonction.php"

En effet, cet exemple rassemble plein d’éléments utilisés ailleurs.

Je dirais plutôt :
"
Préliminaires : aeif = action / exec / inc / formulaire
le nom de mon plugin dans plugin.xml est monplugin

Si un fichier mafonction.php est placé dans plugin/aeif/, il contiendra une fonction qui sera appelée par défaut [*]:

Cette fonction peut s’appeler
aeif_mafonction_dist(), aeif_mafonction()

Règles :

  • aeif_mafonction() surcharge aeif_mafonction_dist()
  • plugin/aeif/mafonction.php est pris en compte à la place de ecrire/aeif/mafonction.php
  • si tu as plugin1/aeif/mafonction.php et plugin2/aeif/mafonction.php, alors, heu… je ne sais pas trop si est pris en compte ou pas… En tout cas l’ordre d’appel risque d’être l’ordre d’activation des plugins (bref, un peu le bazard…)
    "

[*] Il serait plus simple de prendre le problème à l’envers en décomposant l’ordre d’appel qui résulte d’un charger_fonction(« mafonction », « aeif »)
ou d’une url http://monsite/spip.php?aeif=mafonction

Je n’ai jamais utilisé le préfixe avec monplugin.
Par contre, il sert pour compléter mes_fonctions.php et mes_actions.php : monplugin_fonctions.php et monplugin_actions.php sont appelés après les 2 fichiers respectifs

Je n’ai pas trop dit de boulettes ?

@+

.Gilles

PS.: pour les question de newbie qui concernent les plugins, bien sûr que tu peux les poser ici. Mais si cela en agace quelques-un, il vaut peut-être commencer sur spip-user (de toute manière, ceux qui te répondront sur cette liste sont souvent aussi sur l’autre ;). Et puis on est là pour partager notre savoir, non ?

Le préfixe de fonction imposé en fait n’est pas imposé du tout, si on le met, ca ne marche tout simplement pas.

Merci pour ta réponse rapide et détaillée !

FX


spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Matthieu Marcillaud a écrit :

Ce que tu demandes est l'expression d'une requete de plus en plus fréquente qui montre un manque évident de ce côté là et une envie d'implication de développeurs dans ce projet.

oui. un manque de doc.
Il y a des éléments, mais plein plein d'*implicite*, de flou.

Je serais particulièrement intéressé pour écrire des choses dessus, mais je manque de temps ou d'argent :p.

Déjà la doc SPIP2 est un sacré boulot.
La doc technique c'est un encore gros chantier ...
qui reste presque entièrement à faire.

Personne pourtant ne nie maintenant l'intérêt d'une doc technique.
Tout n'est pas encore stabilisé. Tout ne sera jamais totalement stabilisé !
Mais il y a suffisamment de stable, de base à documenter.

Alors pour sortir de juste des bonnes intentions,
la communauté SPIP ne pourrait elle pas lancer une collecte de fonds
pour financer cette documentation ?

Je sais que c'est pas dans la culture SPIP historique.
Mais le rapprochement de SPIP avec le monde de l'argent (SSII) est indéniable,
pour le meilleur et pour le pire,
et une collecte de fonds serait juste un échange de bons procédés.

Il y a parfois des offres de contributions financières de la part de SCI
sensibles au libre, et conscientes de tout ce qu'elles doivent au libre
et des webmasters indépendants ou associatifs qui apprécieraient
monstrueusement cette doc.
Cela me fait penser qu'une campagne pour une collecte de fonds
marcherait bien
et permettrait de BIEN documenter spip core.

Donc, en attendant, la meilleure façon est de lire les codes des plugins en essayant de les comprendre, ce qui est effectivement très long et complexe au debut si l'on est pas familier au moteur SPIP. Mais surtout, pour tout ceux qui le peuvent, rendre compte de leur expertise en écrivant des articles sur le sujet.

Pour cela, c'est bien de savoir quels sont les bons exemples
à suivre en guise d'inspiration et d'apprentissage.
(car il y a aussi des exemples à ne PAS suivre,
ainsi qu'en témoigne la réponse ailleurs de Cédric.)

JLuc

+1

Le 15 nov. 08 à 11:28, JLuc a écrit :

Matthieu Marcillaud a écrit :

Ce que tu demandes est l'expression d'une requete de plus en plus fréquente qui montre un manque évident de ce côté là et une envie d'implication de développeurs dans ce projet.

oui. un manque de doc.
Il y a des éléments, mais plein plein d'*implicite*, de flou.

Je serais particulièrement intéressé pour écrire des choses dessus, mais je manque de temps ou d'argent :p.

Déjà la doc SPIP2 est un sacré boulot.
La doc technique c'est un encore gros chantier ...
qui reste presque entièrement à faire.

Personne pourtant ne nie maintenant l'intérêt d'une doc technique.
Tout n'est pas encore stabilisé. Tout ne sera jamais totalement stabilisé !
Mais il y a suffisamment de stable, de base à documenter.

Alors pour sortir de juste des bonnes intentions,
la communauté SPIP ne pourrait elle pas lancer une collecte de fonds
pour financer cette documentation ?

Je sais que c'est pas dans la culture SPIP historique.
Mais le rapprochement de SPIP avec le monde de l'argent (SSII) est indéniable,
pour le meilleur et pour le pire,
et une collecte de fonds serait juste un échange de bons procédés.

Il y a parfois des offres de contributions financières de la part de SCI
sensibles au libre, et conscientes de tout ce qu'elles doivent au libre
et des webmasters indépendants ou associatifs qui apprécieraient
monstrueusement cette doc.
Cela me fait penser qu'une campagne pour une collecte de fonds
marcherait bien
et permettrait de BIEN documenter spip core.

Donc, en attendant, la meilleure façon est de lire les codes des plugins en essayant de les comprendre, ce qui est effectivement très long et complexe au debut si l'on est pas familier au moteur SPIP. Mais surtout, pour tout ceux qui le peuvent, rendre compte de leur expertise en écrivant des articles sur le sujet.

Pour cela, c'est bien de savoir quels sont les bons exemples
à suivre en guise d'inspiration et d'apprentissage.
(car il y a aussi des exemples à ne PAS suivre,
ainsi qu'en témoigne la réponse ailleurs de Cédric.)

JLuc

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

>> Mais le rapprochement de SPIP avec le monde de l'argent (SSII) est
>> indéniable,

Rien n'empêche ici "le monde de l'argent (SSII)" de publier (ou d'être à l'initiative d') une doc technique de SPIP.

BoOz

S'lt

Pour les plugins, la zone est me semble t il plus adaptée car la
proportion de dev ou utilisateur de plugins sera semble t il plus
importante que sur user

N'hésite à completer la doc, entre autre sur doc.spip.org c'est un wiki