Bonjour,
J'ai moi aussi fourragé quelque peu pour créer un premier plugin. Je pense que nous avons tous procédé de la même manière: bouquiner des sites dans un premier temps pour se faire une idée générale de l'organisation des fichiers. Puis dans un second temps, désosser quelques plugins pas trop complexes pour en analyser le fonctionnement.
Ceci dit, arrêtez moi si je me trompe, mais j'ai l'impression que suite à l'apparition de la branche 2.X de spip, pas mal de choses ont changé dans la manière de concevoir les plugins. Je pense en particulier à toute la couche d'abstraction pour crééer/accéder/modifier la base de données, et aux squelettes en partie interne.
Si j'ai bien intégré ce que j'ai pu lire de ci de la, la structure d'un plugin est similaire à celle des répertoires internes de spip ( prive, ecrire ... ).
On peut donc prendre les fichiers qui s'y baladent comme références. Voici ce que j'ai pou constater en regardant comment les brèves fonctionnent :
Dans : /prive/formulaires/ , il y a :
prive/formulaires/editer_breve.html
prive/formulaires/editer_breve.php
Ceci dit, ce n'est qu'un formulaire à la sauce spip, il manque donc un élément pour l'appeler. On trouvera une première référence ici :
ecrire/exec/breves_edit.php
Dans celle ci, on trouve (entre autres ) ceci :
$contexte = array(
'icone_retour'=>$new=='oui'?'':icone_inline(_T('icone_retour'), generer_url_ecrire("breves_voir","id_breve=$id_breve"), "breve-24.gif", "rien.gif",$GLOBALS['spip_lang_left']),
'redirect'=>generer_url_ecrire("breves_voir"),
'titre'=>$titre,
'new'=>$new == "oui"?$new:$id_breve,
'id_rubrique'=>$id_rubrique,
'config_fonc'=>'breves_edit_config'
);
echo recuperer_fond("prive/editer/breve", $contexte);
On poursuit donc dans : prive/editer/breve et la nous y voila:
<div class='cadre-formulaire-editer'>
<div class="entete-formulaire">
#ENV**{icone_retour}
[<:info_modifier_breve:>
<h1>(#ENV{titre})</h1>]
</div>
#FORMULAIRE_EDITER_BREVE{#ENV{new},#ENV{id_rubrique},#ENV{redirect},#ENV{lier_trad},#ENV{config_fonc}}
</div>
Toujours sous réserve, il y aurait donc trois éléments distincts pour constituer une page d'admin manipulant un objet spip :
- une première partie qui est dans exec qui constitue la peau de la vache: elle construit l'ossature de la page d'administration, vérifie les droits etc.
- un squelette permettant d'appeler le formulaire situé dans editer.
- et enfin le formulaire à proprement parler est de la forme classique de spip et se situe dans un répertoire formulaires.
Cela vous semble t'il cohérent ou me suis-je planté quelque part ?
Cordialement,
Vincent