Initiation aux plugins CaMykS

1. Introduction


Vous l'avez certainement compris via les autres pages de ce site, CaMykS est un système basé sur l'utilisation de plugins. Plus que de simples gadgets, ces extensions font partie intégrante du moteur. CaMykS ne fonctionnerait pas sans ces élements. De l'installation du site à la gestion administrative, notre moteur utilise massivement ses plugins pour effectuer les tâches les plus communes comme les plus spécifiques.

Si un certain nombre de plugins sont disponibles en standard avec le CMS, il est normal de vouloir étendre les capacités de CaMykS et donc de vos sites avec de nouvelles fonctionnalités.

CaMykS correspond à notre vision du développement web. Il nous semble important, avant que vous ne vous lanciez dans la création de plugins, de vous initier aux principes sur lesquels nous nous sommes basés pour construire CaMykS et ses plugins.

2. Un plugin est un objet

Lors des premiers balbutiements du projet CaMykS, le but était d'optimiser le temps de développement tout en conservant un maximum de liberté. A cela, il fallait ajouter la possibilité de développer indépendamment chaque élément sans corrompre la statibilité du système. Nous avons donc opté pour l'utilisation d'objet et des fonctionnalités d'héritage de PHP.

Un plugin est un donc un objet : un dossier et une classe PHP, sur lesquels on greffe les éléments correspondant à son type.

La classe PHP est héritée de son type ( Module, Input, Template ou Theme ), chaque type étant lui-même hérité d'une classe Plugin générique. Chaque plugin profite donc des méthodes associées à son type ainsi que celles fournies par sa qualité de plugin.

Le principe, lors du développement d'un nouvel élément est de surcharger les méthodes issues de son type pour poser les bases de son fonctionnement. Il suffit ensuite d'ajouter toutes les méthodes que vous souhaitez pour étendre les capacités de votre objet.

3 Création et surcharge

CaMykS propose en standard quelques plugins. Ils permettent d'avoir les bases pour la création d'un site web. Les modules administratifs permettent l'initialisation d'un nouveau site, l'activation des plugins et la création de pages sur lequelles on greffe divers modules de contenu : actualités, blogs, contenu HTML, menu, ... Plusieurs templates et thèmes sont disponibles pour une customisation rapide des pages.

3.1 La surcharge des fichiers

L'utilisation des plugins pré-définis est la solution la plus simple pour la création rapide d'un site web. Si l'on peut customiser facilement ce site grâce aux templates et thème, CaMykS propose d'aller plus loin via la surcharge des plugins. Le principe de la surcharge est simple, on modifie pour un site web donné, l'aspect graphique d'un plugin en ré-écrivant les layouts HTML ainsi que les styles. Cette solution permet aux personnes ayant un niveau en PHP limité de construire un site web au design original tout en conservant la puissance des outils fournis en standard.

Les possibilités de modifications sont nombreuses, la surcharge est l'objet d'un tutoriel à part.

 

3.2 La création d'un plugin

Les besoins d'un site internet professionnel sont radicalement différents. Il faut adopter une nouvelle optique, avec la création de plugins dédiés. Encore une fois, CaMykS offre les outils nécessaires pour vous aider dans cette tâche.

Le développement de plugin est dépendant de son type. Les compétences requises différent aussi. Les plus faciles à développer sont les templates, ils nécessitent des connaissances basique du xHTML et des feuilles de style (CSS).


Consacrés au design, les thèmes demandent des qualités de graphistes couplées à des connaissances plus poussées du xHTML et des styles. La pratique du PHP est utile pour concevoir un thème complexe.

(Un tutoriel sur la conception d'un thème est en cours d'écriture.)

Les modules sont un cas particulier, les compétences dépendent du niveau de complexité requis. La création d'un module affichant du HTML ne présente pas plus de difficulté que la création d'un template ou d'un thème. Lors que ce module doit en plus gérer des données, le niveau monte, une connaissance du PHP est alors nécessaire. Pour la gestion d'informations dynamiques, la conception d'un module est facilité par un framework. Des besoins parfois plus exigeants nécessite la connaissance du language SQL pour compléter les fonctionnalités du framework.

(Plusieurs tutoriaux sur la conception d'un module sont en cours d'écriture.)

De part leur nature, les inputs sont réservés aux programmeurs avancés ayant une forte connaissance du système et des languages de programmation.

(Un article technique sur les nombreuses possibilités des inputs est en préparation.)

Quelque soit le type de plugin, il est segmenté en plusieurs fichiers. Cela permet de partager sa création entre plusieurs personnes ayant des compétences distinctes. Ainsi, un programmeur PHP s'occupera du coeur du plugin ainsi que ses connexions à CaMykS. Un spécialiste de la gestion des données créera les librairies associées. Un Webdesigner s'occupera des layouts ainsi que des feuilles de styles.

4. Méthodes de l'objet Plugin

Si vous souhaitez commencer le développement de nouveaux plugins, voici quelques méthodes de bases qui permettent d'optimiser votre temps de développement. Il faudra ensuite jeter un oeil aux tutoriaux spécifiques à chaque type de plugin pour compléter cette liste de fonctionnalités.

4.1 Gestion des accès aux fichiers

L'objet Plugin propose une série de méthodes pour gérer les chemins et urls des fichiers inter-plugin. Ces méthodes sont toutes basées sur le principe de surcharge.

  • load_file($file) : Charge le fichier demandé
  • get_fileURL($file) : Retourne l'url du fichier demandé
  • get_filePath($file) : Retourne le chemin du fichier demandé


Pour accéder aux documents enregistrés par les plugins (situés dans le dossier var du site), il existe des méthodes quasi-équivalentes :

  • load_varFile($file) : Charge le fichier demandé.
  • get_varFileURL($file) : Retourne l'url du fichier demandé.
  • get_varFilePath($file) : Retourne le chemin du fichier demandé.

 

4.2 Compléter les informations de la page HTML

La classe Plugin centralise certaines méthodes, en dialogue direct avec CaMykS, pour complèter les informations de la page HTML générée avant son affichage. Ces fonctionnalités sont accessibles dans les modes Administratif et Visite de CaMykS lors de l'initialisation des plugins.

Vous pouvez agir sur l'ajout de style via les méthodes :

  • add_styleFile($file, $media) : Insère le fichier de style pour le média donné. Laissez le média vide pour que le fichier soit utilisé pour tout les médias. Ce fichier doit être placé dans le dossier css du plugin.
  • add_styleScript($script) : Insère le script donné. 
  • add_styleIncludedFile($script) : Insère le script contenu dans le fichier directement dans la page. Ce fichier doit être placé dans le dossier css du plugin.

La gestion de scripts javascript est possible via les méthodes :

  • add_JSFile($file) : Ajoute le fichier de script situé dans le dossier js du plugin dans la page.
  • add_JSEngineFile($file) : Ajoute le fichier de script situé dans dossier des scripts de système. Les librairies Javascripts de CaMykS sont séparées en deux groupes, les outils (tool) et les objets (object).
  • add_JSExternFile($file) : Ajoute le fichier de script situé à l'url donnée.
  • add_JSScript($script, $unique) : Ajoute le script à la page en vérifiant s'il doit être unique. Ces scripts sont ajoutés après le chargement des fichiers javascript.
  • add_JSPreScript($script, $unique) : Ajoute le script à la page en vérifiant s'il doit être unique. Ces scripts sont ajoutés avant le chargement des fichiers javascript.
  • add_JSLoadScript($script, $unique) : Ajoute le script au chargement de la page en vérifiant si il doit être unique.
  • add_JSUnloadScript($script, $unique) : Ajoute le script au déchargement de la page en vérifiant si il doit être unique. Cette fonctionnalité peut ne pas fonctionner sur certains navigateurs.

Certaines informations supplémentaires sont modifiables :

  • set_RSSFeed($title, $url) : Ajoute l'url d'une page RSS.
  • set_redirect($time, $url) : Ajoute un redirecteur automatique.
  • add_meta($name, $content, $method) : Ajoute un meta

4.3 Plus ?

Complétée par les méthodes disponibles pour chaque type, cette liste représente les besoins actuels pour les plugins que nous créons.  Cette liste évoluera peut être dans le futur. Vous serez informés par l'historique des versions lors de la disponibilité d'une nouvelle version de CaMykS. Bien sûr, cet article sera mis à jour en conséquense.

- © CaMykS '17 - Self Powered -