Crear acciones mediante el módulo Trigger en Drupal 7

Drupal trae el módulo Trigger, que permite definir acciones que se ejecutan en función de los disparadores que se han indicado en las acciones. Es cierto que Trigger se queda pequeño si lo comparamos con el módulo Rules, así que hay que ver si podemos resolver lo que queremos hacer con Triggers, o en su defecto es mejor hacerlo con Rules.

En este caso la acción que he creado es para que se enviase un correo electrónico al creador del post cuando se deja un comentario en su post. Es cierto que esto mismo se puede hacer mediante configuración del módulo Trigger (How to send email notifications for comments in Drupal 7 with actions & triggers (or the Rules module), en este caso la configuración queda en la base de datos y habría que tener el módulo features y el módulo Features Actions Triggers para poder exportar a código las configuraciones.

Otra opción es sencillamente crear tu acción y asociarla al disparador que queremos mediante la UX, para poder crearlo utilizamos el Hook_action_info():

Para sacar este código lo que hice fue mirar las acciones que vienen en el módulo comments, pero existen muchos más acciones en el core de Drupal que pueden servir para ayudarte a entender como funciona y crear tus propias acciones, si no quieres usar rules.

También existe un hook para crear nuestros propios triggers/disparadores , pero esto es otra batalla para una próxima entrada.

Lo interesante del módulo Trigger, y también del módulo Rules, es que nos permite crear nuestra propia herramienta que se comporte en función de eventos, es decir, tener un sistema reactivo a acciones para darle riqueza al mismo. Algunas reacciones interesantes que se pueden programar son:

  • Comprobar el tipo de correo en comentarios para decidir si se publican o no.
  • Mover el estado de contenidos en función de quien los haya editado, o las opciones del mismo que haya marcado, y crear flujos de trabajo.
  • Enviar notificaciones, no solo de correo, también vía twitter, etc…

Es verdad que todo esto que estamos diciendo se puede hacer sin necesidad de usar el módulo Trigger, simplemente usando el hook correspondiente, pero el hecho de usar una acción de Trigger o una regla de rules nos permite tener más ordenado nuestro código.