Este vídeo tutorial está orientado a usuarios de Liferay 6.0 que, aunque es una versión bastante antigua de Liferay, existen numeros portales que la usan.
Dado que tenía que documentar para un proyecto de un cliente cómo hacer esta implementación he aprovechado para compartir el proceso con todos vosotros.
Si necesitas información adicional sobre versiones superiores de Liferay puedes leer el artículo Universal Analytics en Liferay Portal: nuevo código de seguimiento, dónde hablo de las diferencias entre versiones.
Implementar Analytics en Liferay 6.0
Liferay es una aplicación web por lo que modificar directamente los ficheros sobre el servidor no es el procedimiento adecuado. Básicamente lo que tendremos que hacer es un Hook de Liferay, un pequeño plugin que nos sobreescriba los dos ficheros que tenemos que modificar.
Estos dos ficheros son bottom.jsp y top_head.jsp que los podemos encontrar en /ROOT/html/common/themes
Los pasos a seguir serán:
- En Liferay IDE usar el asistente para crear un Hook nuevo con el SDK de Liferay 6.0.6 y un runtime de esta misma versión, un portal en el que podamos desplegar nuestro plugin para probar
- Creamos la estructura de carpetas bajo WEB-INF añadiendo de forma anidada estos 3 directorios html > common > themes
- Metemos dentro de la carpeta themes nuestras copias de bottom.jsp y top_head.jsp
- Editamos bottom.jsp para eliminar las líneas del script de Analytics y guardamos, ver código 1.
- Editamos el fichero top_head.jsp para añadir nuestro nuevo código de Universal Analytics y guardamos, ver código 2.
- Compilamos el Hook y lo desplegamos en el directorio /deploy del portal.
Código1
<%-- Google Analytics --%>
<%
UnicodeProperties groupTypeSettings = layout.getGroup().getTypeSettingsProperties();
String googleAnalyticsId = groupTypeSettings.getProperty
("googleAnalyticsId");
if (Validator.isNotNull(googleAnalyticsId)) {
%>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '<%= googleAnalyticsId %>']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
</script>
<%
}
%>
Código 2
<%-- Google Analytics --%>
<%
UnicodeProperties groupTypeSettings = layout.getGroup().getTypeSettingsProperties();
String googleAnalyticsId = groupTypeSettings.getProperty("googleAnalyticsId");
if (Validator.isNotNull(googleAnalyticsId)) {
%>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '<%= googleAnalyticsId %>', 'auto');
ga('send', 'pageview');
</script>
<%
}
%>