faire d'un script un plugin
Rédigé par gccyrillus le 2 commentairese
La plupart des plugins n'ajoutent qu'une fonctionnalité ponctuellement utile.
D'autres, intègrent de véritables applications.
Leur point communs?
Pour qu'ils soient pleinement fonctionnels ils doivent être greffés aux fonctions natives, ou ajoutés à PluXml.
La créations d'un plugin est souvent chronophage et particulièrement lorsqu'il s'agit d’implémenter un simple script .
Chacun est tenter de modifier à un ou quelques endroits le code de PluXml pour y glisser rapidement cette nouvelle fonctionnalité.
Mais il s’avère que c'est une mauvaise idée. Les versions de PHP qui évoluent en permanence, nécessiteront parfois une remise à niveau du script.
Les mises à jour de PluXml élimineront toutes les modifications effectuées au sein du code contrairement à un plugin, qui n'aura pas forcément besoin d'une mise à niveau.
le pourquoi d'un plugin
L'installation d'un plugin est de beaucoup, plus perenne, que l'inclusion manuel d'un script., il n' y a pas à en douter
Le plugin ne demande pas à l'utilisateur d'avoir des compétences de développeur ni une expertise sur le code de PluXml. Tout au plus si c'est la première fois, la capacité d'activer un plugin pour ceux gérant leur CMS en autonomie complète...
Si vous avez installer vous même PluXml, l'installation et l'activation d'un plugin est tout aussi simple !.
Reprenons un script en exemple:
Voyons comment integrer le script commentaires dans une page statique en un plugin avec le confort d'une page de configuration.
Cette article est pour démontrer !, qu’une fois le plugin réalisé, l'utilisateur n'aura pas à savoir coder pour ajouter cette fonction à toute les pages statiquestelle ou telle page statique ni pour régler les options d'affichages.
Préparons le dossier de notre projet de plugin.
Pour cela , ils nous faut un nouveau dossier dans le répertoire plugins
de PluXml. Nommons ce dossier : MonPlugin.
Dans ce dossier ajoutons deux fichiers vides, l'un nommé MonPlugin.php (même nom que le dossier, c'est obligatoire.) et infos.xml.
Remplissons tout de suite le fichier infos.xml qui décrit votre plugin et l'identifie dans l'administration avec le code suivant:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<title><![CDATA[mon plugin]]></title>
<author><![CDATA[G.Cyrille]]></author>
<version>1</version>
<date>01/01/1980</date>
<site>https://pluxopolis.net</site>
<description><![CDATA[Ajoute aux pages statiques le module commentaires de PluXml.]]></description>
<scope></scope>
</document>
Enregistrons et passons à la suite.
le Hook central
Il n'y a qu'un seul script à intégrer et nous pouvons facilement identifier le Hook qui va injecter ce script au bon endroit.
Cet endroit est juste après le contenu de la page, recherchons la fonction qui extrait ce contenu .Nous la trouvons dans le fichier du theme static.php et c'est : $plxShow->staticContent();
.
Regardons maintenant cette fonction dans le fichier core/lib/class.plx.show.php si elle dispose d'un Hook :
/**
* Méthode qui inclut le code source de la page statique
*
* @scope static
* @author Florent MONTHEL, Stephane F
**/
public function staticContent()
{
if (eval($this->plxMotor->plxPlugins->callHook("plxShowStaticContentBegin"))) return;
# On va verifier que la page a inclure est lisible
if ($this->plxMotor->aStats[$this->plxMotor->cible]['readable'] == 1) {
# On genere le nom du fichier a inclure
$file = PLX_ROOT . $this->plxMotor->aConf['racine_statiques'] . $this->plxMotor->cible;
$file .= '.' . $this->plxMotor->aStats[$this->plxMotor->cible]['url'] . '.php';
# Inclusion du fichier
ob_start();
require $file;
$output = ob_get_clean();
eval($this->plxMotor->plxPlugins->callHook('plxShowStaticContent'));
echo $output;
} else {
echo '' . L_STATICCONTENT_INPROCESS . '
';
}
}
Cette fonction dispose de deux entrées ou appels identifiable apr cet syntaxe: eval(/* appel du hook par son nom*/)
.
Ici, c'est le deuxième qui nous intéresse eval($this->plxMotor->plxPlugins->callHook('plxShowStaticContent'));
. C'est à partir du hook plxShowStaticContent que l'on pourra injecter le script dans la page statique.
Note, un listing de tous les hooks disponibles est ici : liste des hooks.
l'assemblage
chaque plugin se construit sur une structure de base identique à laquelle on ajoute les hooks et autres fonctionnalités optionnelles.
Voici le code minimal d'un plugin :
<?php if(!defined('PLX_ROOT')) exit;
class monPlugin extends plxPlugin {
public function __construct($default_lang){
# Appel du constructeur de la classe plxPlugin (obligatoire)
parent::__construct($default_lang);
# Déclaration des hooks
}
Nous avons le script et le hook d'entrée, il ne reste qu'a assembler les deux et les ajouter à la base , et toutes nos pages statiques pourront bénéficier d'un module de commentaires.
Declarons le hook et ajoutons la fonction du hook
<?php if(!defined('PLX_ROOT')) exit;
class monPlugin extends plxPlugin {
public function __construct($default_lang){
# Appel du constructeur de la classe plxPlugin (obligatoire)
parent::__construct($default_lang);
# Déclaration des hooks
$this->addHook('plxShowStaticContent', 'plxShowStaticContent');
}
# methode qui modifie la fonction $plxShow->staticContent())
public function plxShowStaticContent() {
# insertion des commentaires et formulaire
echo '<?php';
?>
// ici le code à injecter et à interpréter dans la fonction staticContent()
<?php
echo'?>';
}
}
Pour injecter et ajouter ce code dans la page statique, nous allons suivre la méthode utiliser dans la fonction qui fait déjà quelque chose de similaire en injectant le contenu de la page statique, il suffit de reproduire cette méthode
# Inclusion du fichier
ob_start();
require $file;
$output = ob_get_clean();
eval($this->plxMotor->plxPlugins->callHook('plxShowStaticContent'));
echo $output;
L'injection de notre script va se produire juste avant echo $output;
, nous devons donc inclure le script dans echo $output;
.
Pour simplifier la lecture du code et facilement mettre à jour notre script, nous sauvegardons le script dans un fichier externe, c'est lui que nous allons inclure.
Ce qui donne en copiant le fonctionnement de la fonction staticContent().
<?php if(!defined('PLX_ROOT')) exit;
class MonPlugin extends plxPlugin {
public function __construct($default_lang){
# Appel du constructeur de la classe plxPlugin (obligatoire)
parent::__construct($default_lang);
# Déclaration des hooks
$this->addHook('plxShowStaticContent', 'plxShowStaticContent');
}
# methode qui modifie la fonction $plxShow->staticContent())
public function plxShowStaticContent() {
# insertion des commentaires et formulaire
echo '<?php';
?>
ob_start();
include( PLX_PLUGINS.'MonPlugin/include.commentaire.php');
$output .= ob_get_clean();
<?php
echo'?>';
}
}
Il suffit maintenant de créer un troisième fichier vide , appeler include.commentaire.php
et de coller à l'intérieur le script commentaires dans une page statique. enregistrer ce fichier dans le répertoire de votre nouveau plugin.
Il ne reste plus qu'a activé le plugin pour voir toutes vos pages statiques dotées d'un module de commentaires.
C'est pas si compliqué!
PluXml à tout prévu pour laisser à chacun la possibilité de modifier son fonctionnement en l’agrémentant de diverses fonctionnalités sans avoir à toucher au cœur même de PluXml.
Nous venons juste de voir l'injection d'un seul script, mais l'on peut faire beaucoup plus.
Code disponible sur github @ https://github.com/gcyrillus/MonPlugin.
DClassé dans : Programmation, Plugin ,Mots clés : Programmation, Plugins, Tutoriels
A propos de l'auteur, gccyrillus:
Gccyrillus : Amoureux de PluXml et codeur bricoleur à mes heures perdues.
2 commentaires
Gccyrillus a dit : #2
@elMosk , oui en effet, mais la création d'un plugin est elle même pas simple et demande déjà quelques connaissances dans le développement web et le fonctionnement de PluXml.
Il est certain que pour un débutant, c'est tout simplement incompréhensible ;)
Merci de ton retour
rFil RSS des commentaires de cet article
elMosk a dit : #1