Projet

Général

Profil

SondesPiwik » Historique » Version 3

« Précédent - Version 3/10 (diff) - Suivant » - Version actuelle
Christophe Deseure, 11/10/2011 14:29


Mise en place d'une sonde dans une application

document de travail

Une application doit être enregistrée sur le serveur piwik comme un site.
On renseigne un nom d'application et une url d'accès (ou plus).
En échange, on obtient l'identifiant piwik de l'application.

Il existe plusieurs moyens de remonter des statistiques côté client :
- en javascript : http://piwik.org/docs/javascript-tracking/
- à l'aide d'une API PHP : http://piwik.org/docs/tracking-api/

Utilisation du javascript

Côté application, la sonde a besoin de 2 paramètres afin d'identifier le serveur piwik à utiliser :
- son url sans le protocole "http"
- l'identifiant de l'application
Et, il faut pouvoir en désactiver l'utilisation.

Pour une sonde simple, consistant à enregistrer tout accès à une page spécifique, il suffit d'ajouter un bloc de javascript.
Le client piwik va notamment envoyer l'url de la page et son titre qui sont comptabilisés dans l'onglet "Actions".
Pour une sonde donnée, la page peut varier car les paramètres fournis en GET sont présents.
De plus, le titre de la page peut ne pas être représentatif.
Je propose donc qu'une sonde redéfinisse ces valeurs afin d'avoir des remontées parlantes.

Cela donnerait (PIWIK_URL et ID_SITE étant des variables à gérer) :

<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = ("https:" == document.location.protocol) ? "https://" : "http://";
pkBaseURL += PIWIK_URL;
document.write(unescape("%3Cscript src=\'" + pkBaseURL + "piwik.js\' type=\'text/javascript\'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
  var piwikTracker = Piwik.getTracker(pkBaseURL+"piwik.php",ID_SITE);
  piwikTracker.setDocumentTitle("...");
  piwikTracker.setCustomUrl("...");
  piwikTracker.trackPageView();
} catch( err ) {}
</script>
<!-- End Piwik Code -->

Pour prendre l'exemple de la procédure adoptée dans le cahier de textes (cdt), les 2 variables sont à enregistrer dans la table "cdt_params".
Si elles ne sont pas fournies ou sont vides, les sondes sont inactives.
Celles-ci sont récupérées ensuite en session par le script "inc/sessions_params.php" :

if(mysql_num_rows($piwik_url_db)>0)
    {
    $row_piwik_url_db = mysql_fetch_assoc($piwik_url_db);
    $_SESSION['piwik_url'] = trim($row_piwik_url_db['param_val']);
    if(!empty($_SESSION['piwik_url']) && substr($_SESSION['piwik_url'], -1)!="/") $_SESSION['piwik_url'] .= "/"; //précaution
    }
else $_SESSION['piwik_url'] =  '';
if(mysql_num_rows($piwik_idsite_db)>0)
    {
    $row_piwik_idsite_db = mysql_fetch_assoc($piwik_idsite_db);
    $_SESSION['piwik_idsite'] = intval($row_piwik_idsite_db['param_val']);
    }
else $_SESSION['piwik_idsite'] = 0;

Puis, la sonde ressemble à ceci dans le cas d'une consultation :

if(!empty($_SESSION['piwik_url']) && !empty($_SESSION['piwik_idsite'])) //sonde active dès que les 2 paramètres sont valides
    {
    echo '
    <!-- Piwik -->
    <script type="text/javascript">
    var pkBaseURL = ("https:" == document.location.protocol) ? "https://" : "http://";
    pkBaseURL += "'.$_SESSION['piwik_url'].'";
    document.write(unescape("%3Cscript src=\'" + pkBaseURL + "piwik.js\' type=\'text/javascript\'%3E%3C/script%3E"));
    </script><script type="text/javascript">
    try {
      var piwikTracker = Piwik.getTracker(pkBaseURL+"piwik.php",'.$_SESSION['piwik_idsite'].');
      piwikTracker.setDocumentTitle("consultation/'.$row_RsClasse['nom_classe'].'");
      piwikTracker.setCustomUrl("cdt/consulter.php");
      piwikTracker.trackPageView();
    } catch( err ) {}
    </script>
    <!-- End Piwik Code -->';
    }

L'utilisation du "/" dans le nom du titre ou de la page permet une catégorisation dans piwik et l'affichage d'une arborescence.

Pour aller plus loin, on peut enregistrer aussi l'utilisation de liens externes et le chargement de fichiers en ajoutant ceci :

piwikTracker.enableLinkTracking();

gen_config statistique.png Voir (122 ko) Arnaud FORNEROT, 01/04/2014 10:39