Instanciar un plugin Joomla desde un componente o modulo

Joomla   |   0 Comentarios

Hola a todos, vamos a explicar como crear una instancia de un plugin Joomla, en este caso nos ha servido tanto para joomla 1.5 como para joomla 1.7 por igual. Imaginemos el caso que tenemos un plugin que ya se encarga de obtener un dato X de una tabla Y, y necesitamos esos datos para montar un componente, o para usar esos datos en un modulo. Si ya tenemos un plugin en joomla que ya nos hace la funcion Z, ¿para que reinventar la rueda?. Usemos este. El primer paso es crear una instancia del plugin. Esto lo indicamos con la siguiente llamada:

 &JPluginHelper::importPlugin("[tipoPlugin]", "[nombredelPlugin]"); 

Esto nos devuelve una instancia del plugin Z [nombredelPlugin], por lo que debemos asignar esta sentencia a una variable creada por nosotros. importPlugin es un metodo estatico de la clase JPluginHelper dentro de las librerias de joomla, por lo que podemos instanciarlo desde cualquier parte de nuestro codigo indicando que llamamos a un metodo estatico< :: > Una vez tenemos la instancia necesitaremos un “disparador”. Un disparador en joomla es un objeto de la clase JDispatcher que se encarga de lanzar la llamada a un metodo. En Joomla se utiliza el patron Singleton para la creacion de el, por lo que nosotros no debemos crear uno nuevo, sino instanciar este:

 &JDispatcher::getInstance(); 

Con esto best pokies online nos aseguramos que nos dara el mismo objeto que ya existia creado y no duplicaremos informacion, como en el caso anterior esta llamada se realiza a un metodo estatico de la clase JDispatcher y nos devolvera un objeto de dicho tipo, por lo que debemos asignar una variable para guardar dicho objeto retornado. Este objeto lo necesitamos si o si,  ya que es quien se va a encargar de realizar la llamada a la funcion Z de nuestro plugin. Como ultimo paso nos toca lanzar la llamada al evento que estimemos oportuno, podemos tratar el evento como “metodo” pero solo en este ejemplo para aclarar ( un evento no es lo mismo que un metodo, OJO ). Para lanzar un evento usamos el objeto que obtuvimos con JDispatcher anteriormente, llamando al metodo < trigger > de la clase JDispatcher. ejemplo:

 $dispatcher->trigger( "[nombredelEvento]", array( )[array de parametros para el metodo del plugin]); 

Este metodo necesita como argumentos:

  1. *El nombre del evento a lanzar, que se corresponde con el nombre del metodo que contiene el plugin a cual hemos instanciado anteriormente
  2. Lista de parametros que espera dicho metodo, debemos parasarlos como array en la llamada al disparador

Dependiendo de lo que ocurra en esta funcion del plugin retornara un valor, o mostrara un resultado u otra accion que tenga este desarrollada para tal caso.

*Hay algunos plugin que no implementan la estructura clase-metodos, por lo que cuando realicemos la llamada al metodo trigger debemos fijarnos si en el [nombredelEvento] estamos pasando un evento que este registrado como evento en el plugin, esto lo podemos ver buscando el plugin que vamos a instanciar; Dentro de este en su archivo .php podemos ver si contiene llamadas a registerEvent y que eventos registra, si no esta registrado como evento el metodo al cual queremos instanciar podemos registrar un evento nuevo nosotros. Si el plugin al que instanciamos no tiene el evento que lanzamos como registrado, ni tampoco una clase con un metodo que se llame tal cual llamamos nosotros al metodo, este proceso fallará obteniendo null como resultado en el proceso.

mas info. DOC de Joomla -> Instanciar plugin en DOC de Joomla

¿Te ha gustado el artículo?
Sé el primero en calificar esta publicación.
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas
Loading...
Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *



Aún no hay comentarios en esta entrada. ¿Te animas?