Projet

Général

Profil

SondesPiwik » Historique » Version 2

Christophe Deseure, 11/10/2011 12:34

1 2 Christophe Deseure
h1. Mise en place d'une sonde dans une application
2 1 Christophe Deseure
3 1 Christophe Deseure
__document de travail__
4 1 Christophe Deseure
5 1 Christophe Deseure
Une application doit être enregistrée sur le serveur piwik comme un site.
6 1 Christophe Deseure
On renseigne un nom d'application et une url d'accès (ou plus).
7 1 Christophe Deseure
En échange, on obtient l'identifiant piwik de l'application.
8 1 Christophe Deseure
9 1 Christophe Deseure
Côté application, la sonde a besoin de 2 paramètres afin d'identifier le serveur piwik à utiliser :
10 1 Christophe Deseure
  - son url sans le protocole "http"
11 1 Christophe Deseure
  - l'identifiant de l'application
12 1 Christophe Deseure
Et, il faut pouvoir en désactiver l'utilisation.
13 1 Christophe Deseure
14 1 Christophe Deseure
Pour une sonde simple, consistant à enregistrer tout accès à une page spécifique, il suffit d'ajouter un bloc de javascript.
15 1 Christophe Deseure
Le client piwik va notamment envoyer l'url de la page et son titre qui sont comptabilisés dans l'onglet "Actions".
16 1 Christophe Deseure
Pour une sonde donnée, la page peut varier car les paramètres fournis en GET sont présents.
17 1 Christophe Deseure
De plus, le titre de la page peut ne pas être représentatif.
18 1 Christophe Deseure
Je propose donc qu'une sonde redéfinisse ces valeurs afin d'avoir des remontées parlantes.
19 1 Christophe Deseure
20 1 Christophe Deseure
Cela donnerait (PIWIK_URL et ID_SITE étant des variables à gérer) :
21 1 Christophe Deseure
22 1 Christophe Deseure
<pre>
23 1 Christophe Deseure
	<!-- Piwik -->
24 1 Christophe Deseure
	<script type="text/javascript">
25 1 Christophe Deseure
	var pkBaseURL = ("https:" == document.location.protocol) ? "https://" : "http://";
26 1 Christophe Deseure
	pkBaseURL += PIWIK_URL;
27 1 Christophe Deseure
	document.write(unescape("%3Cscript src=\'" + pkBaseURL + "piwik.js\' type=\'text/javascript\'%3E%3C/script%3E"));
28 1 Christophe Deseure
	</script><script type="text/javascript">
29 1 Christophe Deseure
	try {
30 1 Christophe Deseure
	  var piwikTracker = Piwik.getTracker(pkBaseURL+"piwik.php",ID_SITE);
31 1 Christophe Deseure
	  piwikTracker.setDocumentTitle("...");
32 1 Christophe Deseure
	  piwikTracker.setCustomUrl("...");
33 1 Christophe Deseure
	  piwikTracker.trackPageView();
34 1 Christophe Deseure
	} catch( err ) {}
35 1 Christophe Deseure
	</script>
36 1 Christophe Deseure
	<!-- End Piwik Code -->
37 1 Christophe Deseure
</pre>
38 1 Christophe Deseure
39 1 Christophe Deseure
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".
40 1 Christophe Deseure
Si elles ne sont pas fournies ou sont vides, les sondes sont inactives.
41 1 Christophe Deseure
Celles-ci sont récupérées ensuite en session par le script "inc/sessions_params.php" :
42 1 Christophe Deseure
43 1 Christophe Deseure
<pre>
44 1 Christophe Deseure
if(mysql_num_rows($piwik_url_db)>0)
45 1 Christophe Deseure
	{
46 1 Christophe Deseure
	$row_piwik_url_db = mysql_fetch_assoc($piwik_url_db);
47 1 Christophe Deseure
	$_SESSION['piwik_url'] = trim($row_piwik_url_db['param_val']);
48 1 Christophe Deseure
	if(!empty($_SESSION['piwik_url']) && substr($_SESSION['piwik_url'], -1)!="/") $_SESSION['piwik_url'] .= "/"; //précaution
49 1 Christophe Deseure
	}
50 1 Christophe Deseure
else $_SESSION['piwik_url'] =  '';
51 1 Christophe Deseure
if(mysql_num_rows($piwik_idsite_db)>0)
52 1 Christophe Deseure
	{
53 1 Christophe Deseure
	$row_piwik_idsite_db = mysql_fetch_assoc($piwik_idsite_db);
54 1 Christophe Deseure
	$_SESSION['piwik_idsite'] = intval($row_piwik_idsite_db['param_val']);
55 1 Christophe Deseure
	}
56 1 Christophe Deseure
else $_SESSION['piwik_idsite'] = 0;
57 1 Christophe Deseure
</pre>
58 1 Christophe Deseure
59 1 Christophe Deseure
Puis, la sonde ressemble à ceci dans le cas d'une consultation :
60 1 Christophe Deseure
61 1 Christophe Deseure
<pre>
62 1 Christophe Deseure
if(!empty($_SESSION['piwik_url']) && !empty($_SESSION['piwik_idsite'])) //sonde active dès que les 2 paramètres sont valides
63 1 Christophe Deseure
	{
64 1 Christophe Deseure
	echo '
65 1 Christophe Deseure
	<!-- Piwik -->
66 1 Christophe Deseure
	<script type="text/javascript">
67 1 Christophe Deseure
	var pkBaseURL = ("https:" == document.location.protocol) ? "https://" : "http://";
68 1 Christophe Deseure
	pkBaseURL += "'.$_SESSION['piwik_url'].'";
69 1 Christophe Deseure
	document.write(unescape("%3Cscript src=\'" + pkBaseURL + "piwik.js\' type=\'text/javascript\'%3E%3C/script%3E"));
70 1 Christophe Deseure
	</script><script type="text/javascript">
71 1 Christophe Deseure
	try {
72 1 Christophe Deseure
	  var piwikTracker = Piwik.getTracker(pkBaseURL+"piwik.php",'.$_SESSION['piwik_idsite'].');
73 1 Christophe Deseure
	  piwikTracker.setDocumentTitle("consultation - '.$row_RsClasse['nom_classe'].'");
74 1 Christophe Deseure
	  piwikTracker.setCustomUrl("cdt/consulter.php");
75 1 Christophe Deseure
	  piwikTracker.trackPageView();
76 1 Christophe Deseure
	} catch( err ) {}
77 1 Christophe Deseure
	</script>
78 1 Christophe Deseure
	<!-- End Piwik Code -->';
79 1 Christophe Deseure
	}
80 1 Christophe Deseure
</pre>