Utiliser Google Analytics dans un projet Sphinx

Note

Cette page parle de Google Analytics

Pour plus de détails, il peut être utile d'aller s'informer ailleurs :

Note

Cette page parle aussi de Sphinx

Et donc, pour plus de détails, il peut aussi être utile d'avoir en tête le fonctionnement de Sphinx, notamment sur le templating : sphinx-doc.org/templating.html.

Google Analytics, par défaut

Le code de base :

(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', 'UA-38514290-15', 'ga-beacon.appspot.com');
ga('send', 'pageview');

Donc, la première solution est bien sûr de modifier la page de template principale (normalement, _templates/layout.html ou .templates/layout.html) et d'y ajouter ce code entre deux balises <script type="text/javascript"> et </script>.

Si possible, il faut le mettre à la fin de la page, pour accélérer le chargement.

Une version un peu plus consise

(Et aussi plus facile à maintenir !) Il suffit de créer un script ga.js contenant le morceau de code précédant, et l'ajouter sur votre site, n'importe où.

Par exemple : ga.js.

Il faut alors l'inclure dans chaque page avec ce code HTML à la fin du fichier (dans <bottom> ou à la fin de <body>) :

<script type="text/javascript" async src="http://perso.crans.org/besson/_static/ga.js"></script>

En plus, la balise async accélèrera le chargement de la page en déférant l'exécution du script. Super !

Comment et où l'inclure

Pour un exemple, vous pouvez consulter le fichier template de ces pages, layout.html.


D'autres solutions ?

Sphinx propose une petite extension pour facilement ajouter le suivi Google Analytics, voir sur cette liste (dans ce dossier sur le dépôt de sphinx-contrib). C'est simple et rapide à utiliser, ça marche bien, et par exemple je m'en sers notamment sur des petits projets Sphinx : infoMP/TPs/solution, infoMP/DSs/solution et infoMP/TDs/solution.