Plugin MODX
Comprendre le fonctionnement des plugins MODX par l’exemple
  • 03 septembre 2016
  • Steeve

MODX Plugin

Les Plugins sont similaires a des Snippets (bout de code PHP) qui ont accès à l'API de MODX comme je l'ai déjà expliqué dans mon tutoriel : comprendre le fonctionnement de MODX. La différence c'est que le Snippets est appelé dans un modèle de page (Template) ou dans un Chunk, il est donc exécuté à chaque fois que vous appelez la page qui contient le code. Tandis que le Plugin lui est exécuté sur un événement système. Par exemple l'événement système OnPageNotFound qui se déclenche comme son nom l'indique quand une page n'est pas trouvé. Si notre plugin est rattaché a cette événement et qu'un internaute va sur une page qui n'existe pas alors l'événement ce déclenchera et exécutera le ou les Plugins attachés.

Les événements système

Les événements système sont très nombreux et leurs noms commencent toujours pas On, exemple : OnDocFormSave, OnPageNotFound, OnDocPublished... Ils permettent donc d'être à l'écoute d'un ou plusieurs événements et peuvent être utilisés dans une grande variété d'applications différentes. Regardez ici la liste de tous les événements système disponible.

Exemple d'un Plugin

Ce plugin tout simplement remplacer tous les mots « MODX » par un texte de remplacement : « [mot remplacé par le plugin] ». Pour que le plugin fonctionne vous devez aller dans l'onglet « Événements système » de votre plugin et de coché la case « OnWebPagePrerender » pour le rattacher à cet événement système.

// Récupère ce que renvoie la ressource dans la variable « out »
$out = &$modx->resource->_output; 
// Remplace le mot « MODX » par « [mot remplacé par le plugin] »
$out = str_replace('MODX', '[mot remplacé par le plugin]',$out);
// Renvoi les données modifiés ou pas de la ressource
return;

Vous pouvez aussi imaginer un Plugin qui pourrait être utilisé sur plusieurs événements et qui selon l'événement exécute différentes actions. Pour ce faire il suffit par exemple de faire un simple switch en testant le nom de l'événement effectué comme ci-dessous :

// Varie selon le nom de l’événement
switch ($eventName) {
    // Dans le cas de l’événement OnWebPagePrerender
    case 'OnWebPagePrerender':
       // faire ceci
       break;
     // Dans le cas de l’événement OnWebPageInit
    case 'OnWebPageInit':
       // faire cela
       break;
}

Maintenant que vous avez les bases vous pouvez voler de vos propres ailes. Je vous conseil quand même des lectures complémentaires en Anglais avec le guide officiel de MODX ainsi que l'excellent guide de Bob Ray :

- https://rtfm.modx.com/revolution/2.x/developing-in-modx/basic-development/plugins
- http://bobsguides.com/modx-plugins.html

J’espère que ce tutoriel vous aura été utile. Comme toujours je reste à votre disposition pour toutes questions.

Partagez cet article

A propos de l'auteur

Steeve

Passionné d’informatique, de Design, de développement d'application et du Web en général (participation au start-up weekend, hackathon, dev Var, formation Google...), j’ai créé ce site afin de partager mes connaissances sur mon système de gestion de contenu préféré MODX. En espérant participer au développement de la communauté.

Commentaires (0)





Tags autorisés : <b><i><br> Ajouter un nouveau commentaire :