Comment créer un plugin ?

Qu'es-ce que c'est ?

Un plugin est un micro-programme qui permet d'ajouter des fonctionnalités à un logiciel supportant cette fonctionnalitée même. Nous appelons un plugin en anglais "addon" parce que celui-ci ajoute des fonctionnalités. Par exemple, avec EvoCMS, vous pouvez ajouter un système de ticket, un système de " J'aime / like " comme facebook et même modifier le fonctionnement même du CMS par l'influence d'un plugin. Tout ce que vous devez faire, c'est de conçevoir ce plugin. Bon vous l'aurez compris que ce tutoriel ne va pas vous apprendre à programmer donc, vous devez possèder une assez bonne connaissance en PhP pour conçevoir un plugin.

Code de base

Le code de base permet de bien faire reconnaître le plugin au CMS. Certaines informations dites "de base" sont necessaires au bon fonctionnement du plugin. Nous parlons d'informations importantes tel que : Nom du plugin, auteur, version, description et fonctions à intégrer au plugin.

Fichier : module.json

{
    "name": "My Plugin Name",
    "description": "Short Description of my plugin",
    "version": "1.0.0",
    "authors": [
        "My Name (Email or URL)"
    ],
    "exports": ["plugin"],

    "homepage": "URL of my Project HomePage",
    "manifest": "",
    "download": "URL for Downloading this project",

    "changelog": [
        {
            "version": "1.0.0",
            "date": "2019-11-25",
            "changes": "First version"
        }
    ],

    "settings": {},

    "permissions": {}
}

 

Fichier : index.php de votre plugin

<?php

defined('EVO') or die;

return new class extends Evo\Module
{
    public function init(){

        if(defined('EVO_ADMIN')){
            require_once __DIR__ .'/pages_admin/core/functions.php';
        }else{
            require_once __DIR__ .'/pages_user/core/functions.php';
        }

        // You can create a route or condition for the Plugin
    }

    public function activate()
    {

        // What happen when you enabling your plugin ?

        App::setNotice("This plugin is enable");
    }

    public function deactivate()
    {
        // What happen when you disabling your plugin ?

        App::setNotice("This plugin is disable");
    }

    public function hook_user_menu(array &$items)
    {
        /* executed during the generation of the admin menu to add items to the "plugins" category */
        /* items is an array of [label, fa-icon, link, permission] */
        $items[] = ['Google', 'fa-home', 'https://google.ca', null];
        $items[] = ['Menu added by plugin', '', '?page=demo', null];
    }

    public function hook_admin_menu(array &$items)
    {
        /* executed during the generation of the user dropdown/menu. You can append menu items to $items */
        /* items is an array of [label, fa-icon, link] */
        $items[] = ['Menu added by plugin', 'fa-steam', 'demo/test'];   }

};