Module premiers pas

De Cms Made Simple France
Aller à : navigation, rechercher

Premiers pas dans la création d'un module

Préambule

La création d'un module dans CmsMadeSimple est relativement très simple. Et si je dis "relativement" c'est que n'importe qui ne peut se prétendre être développeur comme ça d'un coup.

Alors avant d'aller plus loin, vérifions ensemble si vous vous sentez prêt à rentrer dans le bain :

Avez vous déjà fait des programmes en php ?
connaissez vous bien le langage php ?

Si à ces questions c'est un non catégorique alors je ne peux que vous conseiller de vous former au préalable sur les sites spécialisés.

Outillage

Voici une liste non-exaustive des outils, des documents, des logiciels et des liens qui vous seront utiles pour démarrer votre premier module


Par où démarrer ?

Pour ceux et celles qui se sentent à l'aise avec les programmes php, je peux vous conseiller d'installer le module Skeleton et de plonger directement dans son code source pour comprendre son fonctionnement (ses fichiers sont dans le répertoire de votre installation cmsmadesimple : ./module/Skeleton

Pour ceux qui souhaitent démarrer doucement nous allons suivre pas à pas la procédure de création d'un module sous cmsmadesimple.

Normer plutôt que Coder

Les modules dans CmsMadeSimple ont conservé l'état d'esprit de CmsMadeSimple : il faut que ce soit simple pour le développeur. Et c'est dans cette optique que les concepteurs ont prévu de privilégier les normes d'écriture afin d'alléger le poids du code très répétitif.

Le premier exemple de l'utilisation de ces normes est la façon de structurer un module. Nous appelons notre projet CmsModuleCleaner, partant de ce point je vais devoir créer tous ces répertoires dans mon projet (ça se passe dans le répertoire "modules" de votre installation) :

  • ./modules
  • ./modules/CmsModuleCleaner
  • ./modules/CmsModuleCleaner/lang
  • ./modules/CmsModuleCleaner/lang/ext

Dans chaque dossiers vous ajouterez un fichier index.html vide qui servira de sécurité supplémentaire pour éviter qu'un utilisateur trop curieux ne parcourt le contenu de votre module trop facilement

Ce qui fait la force de CmsMadeSimple c'est qu'une telle structure lui permet de détecter seul la présence (ou non) d'un module sur son installation, cela nous évite d'aller modifier le code source du noyau de CmsMadeSimple. Ainsi la mise à jour de CmsMadeSimple se ferra de manière indépendante des modules, ceux qui utilisent des logiciels tels que phpBB, fluxBB et autres savent de quoi je parles :)

Second point dans notre démarche d'économie de code : nommer correctement les fichiers principaux. Vous devez avoir 4 fichiers au minimum dans votre répertoire CmsModuleCleaner :

  • ./CmsModuleCleaner.module.php
  • ./method.install.php
  • ./method.uninstall.php
  • ./lang/en_US.php

Les fichiers method.install.php et method.uninstall.php sont évidement destinés à contenir les instructions nécessaires à l'installation de votre module et à sa désinstallation. C'est ce code qui sera exécuté lorsque l'utilisateur cliquera sur votre module depuis le gestionnaire de modules pour l'installer, ou lorsqu'il clic sur désinstaller depuis ce même gestionnaire de modules : créer une table, créer des paramétrages dédiés à votre module et tout supprimer lorsque l'utilisateur désinstallera votre module.

Idea.png
Une bonne habitude à prendre
Par habitude il vous faut désinstaller TOUT ce que votre module a pu installer ou créer durant son existence afin de laisser place nette à sa sortie.

CmsModuleCleaner.module.php, le noyau de notre module

Fichier le plus important parmis les plus important : CmsModuleCleaner.module.php est LE fichier à créer pour que CmsMadeSimple prenne en compte votre module. Voici le code nécessaire pour démarrer notre module. Copiez le directement dans votre fichier.

<?php

class CmsModuleCleaner extends CMSModule {

	function GetName() {
		return 'CmsModuleCleaner';
	}


	function GetFriendlyName() {
		return $this->Lang('friendlyname');
	}

	function GetVersion() {
		return '1.0.0';
	}

	function GetHelp() {
		return '';
	}

	function GetAuthor() {
		return 'Bess';
	}    

	function GetAuthorEmail() {
		return '';
	}

	function GetChangeLog() {
		return '';
	}

	function IsPluginModule() {
		return false;
	}

	function HasAdmin() {
		return false;
	}

	function GetAdminSection() {
		return 'extensions';
	}

	function GetAdminDescription() {
		return '';
	}

	function VisibleToAdminUser() {
		return false;
	}

	function GetDependencies() {
		return array();
	}

	function MinimumCMSVersion() {
		return "1.11.0";
	}

	function InitializeFrontend() {
	}

	function InitializeAdmin() {
	}

	function RegisterEvents() {

	}

	function InstallPostMessage() {
		return $this->Lang('postinstall');
	}

	function UninstallPostMessage() {
		return $this->Lang('postuninstall');
	}

	function UninstallPreMessage() {
		return $this->Lang('really_uninstall');
	}

}
?>

Nous évitons d'entrer dans les détails pour éviter de vous perdre trop vite. Pas de panique nous reviendrons plus en détail sur chacune de ces fonctions plus tard :)

Testez votre module

Maintenant que nous avons écrit la base de votre module, nous allons tester son installation et sa désinstallation.

Allez dans le panel admin > gestion des modules, vous devriez retrouver votre module. Cliquez sur "installer"

Module 01 01.jpg

Module 01 02.jpg

Et voilà votre module installé ! Un clic sur "désinstaller" devrait vous faire revenir au point de départ.

Partagez votre module

Toujours fidèle à la logique CmsMadeSimple : restons simple.... Cliquez sur le bouton xml sur la droite de la ligne de votre module, un fichier XML devrait vous être proposé en téléchargement, c'est ce fichier que l'on distribuera au final à son client, à ses amis ou à la communauté.

Notez que pour les plus habitués d'entre vous, vous pouvez également proposer un .zip un .tar ou encore un .tar.gz en archivant directement le répertoire de votre module : ./modules/CmsLangCleaner

Déjà finit...

Voilà pour cette partie, vous savez maintenant quel est le strict minimum à réaliser pour démarrer votre module et le partager sur d'autres installation.

Retourner sur la liste des tutoriaux