A veces nos encontramos creando o modificando un Theme de Liferay y necesitamos usar nuestras propias variables que, por supuesto, no vienen definidas en Liferay.

Para ello, debemos usar un hook. En él, crearemos una clase que extenderá com.liferay.portal.kernel.events.Action y en la que sobreescribiremos el método run(). Será en este donde añadamos nuestras variables.

public void run(final HttpServletRequest req,
        final HttpServletResponse res) throws ActionException {

    Map<Object, Object> vmVariables = new HashMap<Object, Object>();
    vmVariables.put("mimensaje", "este mensaje podría ser recuperado en el theme");
    req.setAttribute(WebKeys.VM_VARIABLES, vmVariables);
}

Una vez tenemos la clase, sólo tenemos que declararla en el fichero portal.properties del hook:

servlet.service.events.pre=com.ejemplo.CustomVelocityVariablesAction

Con esto, desplegamos y ya podemos usarla en nuestros themes.