Addons et Modules PHP-Nuke
==========================
Depuis PHP-Nuke 5.0 vous pouvez ajouter de nouveaux modules,
addons ou des plugins juste en les copiant dans un répertoire.
Avec ce dispositif, le webmaster gagne en modularité
et en simplicité de gestion de son site.
Ce document est partagé en deux parties :
décrit comment utiliser le mécanisme des modules pour la mise en place par les utilisateurs
et les webmasters anisi que la technique de mise en oeuvre pour les développeurs.
Vu la nature de ce logiciel et sa compléxité aucune quarantie de quelques nature que se soit
ne peut être données quant à l'exploitation ou la mise en oeuvre de ces informations,
l'utilisation et l'exploitation reste dans tout les cas de figure de votre responsabilité
et ne peut en cas cas, direct ou indirect rendre responsable une quelconque personne participant
à l'élaboration de ce logiciel.
Afin d'améliorer votre niveau de sécurité, nous vous conseillant de réaliser autant
que necessaire des sauvegardes de vos bases de données ou fichiers.
=========================================
1. Pour les Webmaster et les Utilisateurs
=========================================
Pour commencer vous pouvez ajouter ou effacer tous les modules du répertoire " modules ".
Les noms de modules "sous-répertoires" sous le répertoire " modules " suivent quelques règles syntaxiques:
a) Tous les espaces sont remplacés par " _ ", ainsi si vous avez un module appelé
par exemple " Liens Web ", le répertoire module correspendant doit être " Liens_Web "
Les liens d'accès aux différents modules sont ajoutés automatiquement au menu principal juste
en dessous de votre bloc.
Pour la création de la liste des modules nous avons utilisé le codage
ci-dessous au lieu du marqueur
:
· Module Name
Nous souhaitons nous rapprocher le plus possible d'une conformitée à l'HTML 4.01.
Si vous souhaitez modifier cela, juste éditer le fichier mainfile.php
au niveau de la fonction mainblock(), mais essayez de rester sous les normes du language HTML
et d'éliminer tous les marqueurs < LI > de tous vos blocs, pourquoi?
parce que sur le standard actuel précaunise d'utiliser < UL > en amant
et < / UL > à la fin de chaque élément énuméré.
Si vous voulez maintenir ou tester un nouveau modules sans afficher son lien dans le bloc principal ,
Connectez vous en tant qu'administrateur et cliquez sur le lien vers les modules.
Quand vous installez " copiez " un nouveau module dans le répertoire " modules ",
il s'ajoutera et s'initialisera automatiquement dans votre base de modules avec le mode " inactif ".
Les modules inactifs ne peuvent être visualisés et accédés que par les administrateurs.
Si vous avez désactivé le bloc des modules et souhaitez offrir un service offert par un module,
vous pouvez l'activer par le bloc des modules et créez un lien de la forme suivante :
http://www.VotreSite.com/modules.php?mop=modload&name=Votre_Module&file=index
où &name=Votre_Module est le nom du sous répertoire du module et &file=index est le nom du fichier
principal en php (sans extension) de votre module.
Pour simplifier l'ecriture de ces URLs vous pouvez juste mentionner la variable name ansi :
http://www.VotreSite.com/modules.php?name=Votre_Module
Dans ces conditions il faut que le fichier principal du module soit " index.php ".
Lors de l'installation d'un nouveau module ne pas oublier de transformer tous les caractères
blanc " espace " en caractère soulignement " _ " dans l'écriture des noms de répertoires.
Par exemple : le module "Liens Web" doit être avoir comme nom de sous-répertoire "Liens_Web".
Ne pas oublier de respecter la casse, le "L" majuscule est différent du "l" minuscule.
Et de lire la documentation d'installation du module produite par l'auteur.
==========================
2. - pour les développeurs
==========================
La création de nouveaux modules est assez simple, il suffit de respecter certaines régles :
a) Au debut de chaque ficher module ajouter en début de fichier les lignes suivantes :
if (!eregi("modules.php", $PHP_SELF)) {
die ("Vous ne pouvez accéder à ce fichier directement...");
}
Ceci permet d'éviter l'accès direct à un fichier du module.
Les utilisateurs devront suivrent le lien préconisé, et cela nous permet d'inclure
la mise en forme necessaire pour chaque page.
b) La meilleur façon de faire est d'utiliser les "define" comme pour le système de traduction.
Pour cela créer un répertoire "language" dans le répertoire principal du module, et dans chaque
fichier du module inclure le code suivant:
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
get_lang($module_name);
Cela à pour effet d'inclure ( s'il existe ) le fichier de la langue correspondant au
cookie de l'internaute.
Vous pouvez consulter ces fonctionnalités dans les différents fichiers modules inclus.
c) Lors de l'utilisation de l'instruction switch() n'utilisez pas comme nom de variable $mop.
Utiliser un autre nom de variable comme $op, par exemple.
d)Dans le répertoire des modules, ne pas utiliser le caractère "blanc",
utilisez plutot le caractère "_" soulignement.
Par exemple si vous souhaiter créer un module appelé "Tous Sur PhpNuke",
le sous-répertoire doit avoir comme nom "Tous_Sur_PhpNuke".
e) Les liens vers un module sont de la forme suivantes:
http://www.VotreSite.com/modules.php?mop=modload&name=Votre_Module&file=index
où "modules.php?mop=modload" est necessaire telquel ,
"&name=Votre_module" est le nom du répertoire module
et "&file=index" déclare le fichier d'accès,sans l'extension. L'extention sera mise automatiquement.
Facile, Non? Bien, Si vous souhaitez accéder à une fonction particulière d'un quelconque fichier
de votre module, ajouter à l'URL précédente:
&func=Votre_Fonction
Alors, si vous déclariez un switch comme suit:
switch($func) {
case "fonction-une": fonction-une();
break;
}
vous l'appélerez ainsi:
http://www.Votre_Site.com/modules.php?mop=modload&name=Votre_Module&file=index&func=fonction-une
Si votre fonction à besoins de paramètres, votre switch devient:
switch($func) {
case "fonction-une":
fonction-une($xid, $xname);
break;
}
votre lien sera:
http://www.VotreSite.com/modules.php?mop=modload&name=Votre_Module &file=index&func=fonction_une &xid=$xid&xname=$xname
Si vous avez besoin d'utiliser des formulaires dans votre module:
Ne pas oublier de ne pas utiliser des noms de variables réservés comme "name" ou "file"
Et utilisez des noms de variable de switch autre que $mop.
En espèrant que ces règles sont clairs.
Une autre chose importante à savoir: les noms de variables réservés au système :
$name: utilisé pour la déclaration du nom du module
$file: utilisé pour la déclaration du fichier à utiliser
$mop: utilisé par le switch du fichier modules.php
$index: utilisé pour l'ajout ou la suppression des blocs droits
$modload: Nom de la fonction d'appel
$mod_active: utilisé pour connaitre le statut d'un module
Une information supplémentaire: vous pouvez faire en sorte que votre module
s'affiche dans un bloc à droite et à gauche en utilisant la variable $index.
Au debut de votre fichier juste déclaré celle-ci :
$index =1 ;
Si la valeur est à " 1 " un bloc droit sera affiché,
si la valeur est à " 0 " seul le bloc gauche est affiché,
bien sûre avec le thème par défaut ou celui séléctionné par l'utilisateur.
N'oublier pas que vous pouvez aussi utiliser votre propre fichier de
traduction, à nommer par exemple lang-english.php, ainsi votre module
pourra faire appel à la variable d'environement $langage et permettre
une compatibilité avec les options multilingues du site.
Bien, ceci n'est pas une documentation exaustive mais juste quelques notes
pour vous permettre de commencer à utiliser ou programmer vos momdules/addons/plugins.
En espérant que vous apprécierez ces nouvelles fonctionnalités de PHP-NUKE.
=============================================================================
NOTE: Pour rester conforme au standard HTML 4.01
Il est important de substituer tout caractère "&" dans les URLs par"&"
Par exemple :
doit être écrit :
Sans cela, vos pages ne seront pas conforme à l'HTML 4.01.
=============================================================================
ATTENTION AU COPYRIGHT!!!
Vue que PHP-Nuke est livré sous licence GNU/GPL, tout module,
addon, plugin, thème, block, etc. qui necessite une quelconque
partie de code de PHP-Nuke pour être en confomité doit être publier
sous une licence compatible GPL.
Merci de consulter attentivement le fichier COPYING.
=============================================================================