Spip-Mod (© :) ou comment ajouter ses propres modules à SPIP ?

Comment ajouter d’autres outils, modules ou applications spécifiques, que spip ne gère pas, tout en restant dans la partie ecrire ?

Obsolète.... n’est plus en fonction

Une démo en ligne, pour les curieux, elle permet de visualiser un exemple basique du résultat :
login : demo
pass : demo2003


Objectif

Le but est d’ouvrir spip à l’intégration de modules ou « MOD » (du type modules de phpNuke pour les initiés). Ces MODs sont des fonctionnalités nouvelles de la partie privée. A créer suivant un modèle particulier, ils permettent alors de gérer, via l’interface privée de SPIP, des applications diverses et variées (par exemple : gestion d’un jeu, gestion de bannières...).

Le principal avantage vous l’avez compris est de gérer une application particulière via une seule et unique interface.
Un autre intérêt est de disposer d’un modèle permettant de mettre à disposition de chacun un ensemble de MOD créer par des maitres du web émérites.

Comment-ça marche ?

  • Télécharger le fichier modules.php3 dans votre repertoire /ecrire. Ce fichier permet de lire les différents modules présents (ceux que vos allez installés). Il affiche ainsi les liens vers les modules et leurs noms dans la partie privée de SPIP.
  • Créer un sous-répertoire module dans le répertoire /ecrire. Ce sous-répertoire va contenir les différents modules et leurs fonctionalités.
  • Chaque module doit être construit suivant le même modèle. Il faut donc, pour un module donné, créer un répertoire de la forme SPIP-nom_du_module (où ’nom_du_module’ correspond, bien entendu, au nom de votre module). Ce répertoire se situe dans /ecrire/module/.
  • Ce sous-dossier SPIP-nom_du_module contient deux fichiers lus par le fichier modules.php3 :

1) case.nom_du_module.php3 est de la forme suivante, il contient les différents cas de votre module :

$module="SPIP-nom_du_module";
switch($op) {

	case "cas1":
	include ("modules/$module/MonModule.php3");
		break;

	case "cas2":
	include ("modules/$module/MonModule.php3");
		break;
}

2) un link.nom_du_module.php3 permet à modules.php3 de créer le lien vers la page principale de votre module :

$query = "SELECT * FROM spip_auteurs WHERE (id_auteur='$connect_id_auteur' AND statut='0minirezo')";

$result = spip_query($query);
if (mysql_num_rows($result))
{
    adminmenu("modules.php3?op=cas1", "Mon Module", "MonModule.gif");
}

3) le ou les fichiers nécessaires à l’application propre (celle que vous ou d’autres ont développée), ils doivent commencer ainsi (voir aussi l’exemple à télécharger) :

if (!eregi("modules.php3", $PHP_SELF)) { die ("Access Interdit"); }
$nom_mod = "nom_du_module";

$query = "SELECT * FROM spip_auteurs WHERE (id_auteur='$connect_id_auteur' AND (statut='0minirezo' OR statut='1comite'))";
$result=spip_query($query);
if (mysql_num_rows($result))
{

//votre script
function num1() { votre script }

} else {
    echo "Accès non autorisé";
}

Comment accèder aux modules

La solution la plus simple qui ne nécessite pas de modification du noyau de spip et d’ajouter une « Annonce générale » pointant vers modules.php3.

Normalement ça fonctionne, cela doit méritait une amélioration du code, car je ne suis qu’un petit bidouilleur.

On pourrait aussi intégrer directement un bouton « Spip-MOd » dans l’interface privée... mais ceci est une autre histoire.

Les documents joints :
modules.txt à renommer en modules.php3 et à mettre dans le dossier écrire.
Décompresser le .Zip et mettre le dossier SPIP-Demo dans /ecrire/modules

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom