- 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
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é.