web-dev-qa-db-fra.com

Evénement déclencheur pour un plugin spécifique uniquement

Est-il possible de déclencher un événement pour un plugin spécifique?

Je peux charger un plugin spécifique

$loaded = JPluginHelper::importPlugin('my_component', 'my_plugin_1');

Mais quand je déclenche un événement, tous les plugins qui ont cet événement sont activés:

$results = JEventDispatcher::getInstance()->trigger('my_event');

Je reçois les résultats non seulement de plugin1 mais de tous les plugins qui écoutent cet événement.

$results = ['my_plugin_1_response', 'my_plugin_2_response'];

Est-il possible de limiter les plugins écoutant l'événement à my_plugin_1_response seulement?

Veuillez noter qu'une solution possible serait de commander les plugins et d'obtenir le $results[0] en conséquence, mais cela ne m'intéresse pas, je ne veux pas que les autres plugins soient déclenchés du tout.

Merci!

3
xavip

Généralement, un répartiteur d'événements ne prend pas en charge ce concept. Vous feriez mieux d’appeler directement cette fonction plutôt que de passer par un répartiteur si vous ne voulez qu’une seule réponse à partir d’un seul endroit.

Joomla 4.0 utilisera le refactored package d'événement comme base pour la gestion des événements, et EventInterface contient une méthode stopPropagation() qu'un écouteur (vos plugins) peut appeler pour indiquer le répartiteur d'événements. pour arrêter de propager l'événement à d'autres écouteurs. Vous avez donc cela à attendre.

6
Michael