En parlant de plugin

Que ceussent qui ont déjà fait un plugin se lève!
Dans l'esprit toujours d'apprendre à faire mes propres plugins, je suis depuis ce matin en galère pour afficher un simple bouton dans la partie privée du spip. J'ai regardé ce que les autres font.
J'ai fait de même.
J'ai donc fait un truc essai qui s'appelle flux
avec un point d'entrée dans le xml ainsi:
  <pipeline>
                 <nom>ajouter_boutons</nom>
    <action>ajouterBoutons</action>
    <inclure>inc_flux.php</inclure>
           </pipeline>

puis dans mon inc_flux.php ça:

$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
define('_DIR_PLUGIN_FLUX',(_DIR_PLUGINS.end($p)));

function Flux_ajouter_boutons($boutons_admin) {
    if ($GLOBALS['connect_statut'] == "0minirezo" && $GLOBALS["connect_toutes_rubriques"]) {
      $boutons_admin['configuration']->sousmenu['flux']= new Bouton('../'._DIR_PLUGIN_FLUX.'/img_pack/feed.png','Titre');
    }
    return $boutons_admin;
  }
  /* public static */
function Flux_ajouterOnglets($flux) {
  $rubrique = $flux['args'];
  return $flux;
}

Et rien ne s'affiche!! Il faut faire quoi en plus?

MA

monnaieancienne.com a écrit :

Que ceussent qui ont déjà fait un plugin se lève!
Dans l'esprit toujours d'apprendre à faire mes propres plugins, je suis depuis ce matin en galère pour afficher un simple bouton dans la partie privée du spip. J'ai regardé ce que les autres font.
J'ai fait de même.
J'ai donc fait un truc essai qui s'appelle flux
avec un point d'entrée dans le xml ainsi:
  <pipeline>
                 <nom>ajouter_boutons</nom>
    <action>ajouterBoutons</action>
    <inclure>inc_flux.php</inclure>
           </pipeline>

puis dans mon inc_flux.php ça:

$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
define('_DIR_PLUGIN_FLUX',(_DIR_PLUGINS.end($p)));

function Flux_ajouter_boutons($boutons_admin) {
    if ($GLOBALS['connect_statut'] == "0minirezo" && $GLOBALS["connect_toutes_rubriques"]) {
      $boutons_admin['configuration']->sousmenu['flux']= new Bouton('../'._DIR_PLUGIN_FLUX.'/img_pack/feed.png','Titre');
    }
    return $boutons_admin;
  }
  /* public static */
function Flux_ajouterOnglets($flux) {
  $rubrique = $flux['args'];
  return $flux;
}

Et rien ne s'affiche!! Il faut faire quoi en plus?

MA

Pourrait tu envoyer ces question sur spip-zone ?

Les lecteurs y seront plus à même de te répondre que sur spip-user.

--
Maïeul
http://maieul.ouvaton.org

Hello,

Je crois que c'est un probleme de préfixe.

Normalement tu defini dans le fichier plugin.xml un prefixe unique (c'est a dire pas deja pris par un autre plugin) par exemple MonPlugin.

Ensuite ton fichier de boutons peut s'appeller MonPlugin_boutons.php, et dedans les fonctions s'appellent MonPlugin_ajouter_boutons

Avec ce systeme de prefixe, on est sur de pas avoir des collisions de fonctions qui s'appellent pareil -> page blanche pour ceux qui connaissent :smiley:

BoOz

monnaieancienne.com a écrit :

Que ceussent qui ont déjà fait un plugin se lève!
Dans l'esprit toujours d'apprendre à faire mes propres plugins, je suis depuis ce matin en galère pour afficher un simple bouton dans la partie privée du spip. J'ai regardé ce que les autres font.
J'ai fait de même.
J'ai donc fait un truc essai qui s'appelle flux
avec un point d'entrée dans le xml ainsi:
  <pipeline>
                 <nom>ajouter_boutons</nom>
    <action>ajouterBoutons</action>
    <inclure>inc_flux.php</inclure>
           </pipeline>

puis dans mon inc_flux.php ça:

$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
define('_DIR_PLUGIN_FLUX',(_DIR_PLUGINS.end($p)));

function Flux_ajouter_boutons($boutons_admin) {
    if ($GLOBALS['connect_statut'] == "0minirezo" && $GLOBALS["connect_toutes_rubriques"]) {
      $boutons_admin['configuration']->sousmenu['flux']= new Bouton('../'._DIR_PLUGIN_FLUX.'/img_pack/feed.png','Titre');
    }
    return $boutons_admin;
  }
  /* public static */
function Flux_ajouterOnglets($flux) {
  $rubrique = $flux['args'];
  return $flux;
}

Et rien ne s'affiche!! Il faut faire quoi en plus?

MA

BoOz a écrit :

Hello,

Je crois que c'est un probleme de préfixe.

Normalement tu defini dans le fichier plugin.xml un prefixe unique (c'est a dire pas deja pris par un autre plugin) par exemple MonPlugin.

Ensuite ton fichier de boutons peut s'appeller MonPlugin_boutons.php, et dedans les fonctions s'appellent MonPlugin_ajouter_boutons

Avec ce systeme de prefixe, on est sur de pas avoir des collisions de fonctions qui s'appellent pareil -> page blanche pour ceux qui connaissent :smiley:

BoOz

Hélas non, je viens d'essayer de changer le préfixe ainsi que le nom des fonctions, mais c'est toujours aussi vide de bouton..snif! :frowning:

Merci BoOz

monnaieancienne.com a écrit :

Que ceussent qui ont déjà fait un plugin se lève!
Dans l'esprit toujours d'apprendre à faire mes propres plugins, je suis depuis ce matin en galère pour afficher un simple bouton dans la partie privée du spip. J'ai regardé ce que les autres font.
J'ai fait de même.
J'ai donc fait un truc essai qui s'appelle flux
avec un point d'entrée dans le xml ainsi:
  <pipeline>
                 <nom>ajouter_boutons</nom>
    <action>ajouterBoutons</action>
    <inclure>inc_flux.php</inclure>
           </pipeline>

puis dans mon inc_flux.php ça:

$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
define('_DIR_PLUGIN_FLUX',(_DIR_PLUGINS.end($p)));

function Flux_ajouter_boutons($boutons_admin) {
    if ($GLOBALS['connect_statut'] == "0minirezo" && $GLOBALS["connect_toutes_rubriques"]) {
      $boutons_admin['configuration']->sousmenu['flux']= new Bouton('../'._DIR_PLUGIN_FLUX.'/img_pack/feed.png','Titre');
    }
    return $boutons_admin;
  }
  /* public static */
function Flux_ajouterOnglets($flux) {
  $rubrique = $flux['args'];
  return $flux;
}

Et rien ne s'affiche!! Il faut faire quoi en plus?

MA

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ

monnaieancienne.com a écrit :

Hélas non, je viens d'essayer de changer le préfixe ainsi que le nom des fonctions, mais c'est toujours aussi vide de bouton..snif! :frowning:

Ah, et il faut aussi "rebooter" son plugin des qu'on modifie le fichier xml, on fait ca en se rendant dans la page de gestion des plugins pour rafraichir le bazar.

C'est ptet ca ?

BoOz a écrit :

monnaieancienne.com a écrit :

Hélas non, je viens d'essayer de changer le préfixe ainsi que le nom des fonctions, mais c'est toujours aussi vide de bouton..snif! :frowning:

Ah, et il faut aussi "rebooter" son plugin des qu'on modifie le fichier xml, on fait ca en se rendant dans la page de gestion des plugins pour rafraichir le bazar.

C'est ptet ca ?

Ben non pas ça non plus, je le fais à chaque fois..Comprends plus.
Je recommencerai demain, et après demain et ainsi de suite jusqu'à ce que j'y arrive, suis têtu! :wink:

MA

Thibault SCHOENMANN a écrit :

Ton problème est certainement causé par les deux points suivants :

- Il manque le prefix unique (BoOz t'en as parlé)
- L'action de ton pipeline est 'ajouterBoutons' donc ta fonction devra s'appeler tonPrefix_ajouterBoutons et non tonPrefix_ajouter_boutons (moi je préfère la deuxième syntaxe donc supprime ton action dans le fichier xml ou renome le en ajouter_boutons)

VoiliVoila

Merci, c'est vrai que BoOz avait raison. J'avais bien mon prefix mais sans doute pas unique ou trop générique. En faisant plusieurs essais avec des prefixs différents, j'ai réglé ce problème. Je sais donc maintenant rajouter un bouton dans la zone privée! Super!!
Reste le plus dur à faire: Comprendre tout le reste!!

Merci à tous les deux :wink: