Des Plugins Joomla pour "ouvrir" son composant
-
Document typeTutoriel PHP
-
NiveauIntermédiaire
-
Version Joomla1.5.x
-
Dernière modification11.05.12
-
Version PHP4.x, 5.x, 5.3.x
-
Créé parGarstud
-
Version MySQL4.x, 5.x
-
Ça y est ! Vous avez fini ou êtes en train de développer un composant, bravo !
Bon là, on reste un peu perplexe, donc pour vous aiguiller, je dirais que si votre composant est apprécié, d'autres éditeurs de composants ou développeurs d'extensions souhaiteront sans doute :
-
interfacer votre composant avec leur solutions Joomla (composants, modules),
-
étendre les possibilités de votre composant...
Eh bien le framework Joomla vous apporte la solution !
C'est l'implémentation du Design Pattern "Observer" qui va vous aider.
Il utilise la méthode du Publish & Subscribe asynchrone :
- Subscribe : un plugin s'inscrit (1) à un évènement (trigger)
- Publish : lorsque le système Joomla détecte que l'évènement est en cours d'exécution(2) , il dispatche le contexte d'exécution(3) à tous les plugins qui y ont souscrit
1- Mais en quoi cela peut-il étendre les fonctions de mon composant ?
Cette question n'est bien sûr pas simple et surtout pas valable pour tous les composants, mais il s'agit de définir quelles sont les portes d'entrée que vous pouvez ouvrir à un programme tiers pour interfacer votre composant, par exemple :
- votre composant envoie des bons de réduction, il pourrait être intéressant qu'un autre composant puisse intervenir lorsqu'un bon est émis
- votre composant affiche un contenu sur le site, il pourrait être judicieux de permettre à des développeurs d'accéder au contenu juste avant son affichage pour qu'il puisse rajouter des contenus complémentaires (photos, musiques, vidéos...)
2- Appeler le Dispatcher
Il vous suffit alors de placer dans votre code, aux endroits appropriés des "portes" permettant à des plugins d'interagir avec votre contexte d'exécution :
- On demande au dispatcherd'inscrire un nouvel évènement dans Joomla :
- - juste 2 lignes de code pour ouvrir votre application !
//exemple 1 : $dispatcher =& JDispatcher::getInstance(); $results = $dispatcher->trigger( '', > ); //exemple 2 : $dispatcher =& JDispatcher::getInstance(); $results = $dispatcher->trigger( 'onReductionPrepare', $tabParams ); // le $tabParams devant contenir toutes les variables à communiquer a un programme tiers
- Le plugin cherchant à utiliser ou étendre vos services, devant, lui, implémenter l'inscription à l'évènement :
- il enregistre sa fonction dans le système Joomla! auprès de l'évènement
- il définit le code de sa fonction
defined( '_JEXEC' ) or die( 'Restricted access' ); $mainframe->registerEvent( 'onReductionPrepare', 'MaFonctionEnvoiListeProduitsPromo' ); function MaFonctionEnvoiListeProduitsPromo( &tabParams ) { //Plugin code goes here //... envoie un mail au client qui lui fournit tous les produits a acheter avec ces bons de reduction ! }
En savoir plus :
-
-
Catégories





Ajouter un Commentaire