Paul Etienney - Good websites creation
 
 

Carnet de Notes

Afficher le nombre de visites d’une sous-arborescence dans eZ Publish grâce à Google Analytics

Voilà comment afficher sur le tableau de bord d’un client les visites de pans entiers de sites.

L’idée générale est que Google Analytics permet de récupérer certaines informations (comme le nombre de visites) en fonction de certains filtres. Nous allons utiliser ces filtres et connaître le nombre de visites pour un ensemble pages et sous pages (une sous arborescence entière dans ez publish).

Quel intérêt ? Et bien par exemple, un des sites que j’ai fait propose des portails professionnels. J’ai installé sur leur tableau de bord un compteur de visites par portail pro.

Pour les impatients voilà le zip qui contient le code qui suit ainsi que la classe PHP Google Analytics.

Voici comment ça marche :

<?php

// First you include the GA class
include('extension/plateforme/lib/googleanalytics.class.php');

////////////////////
// EZ PUBLISH PART
///////////////////

// The node id at the top of the subtree you want to measure
$nodeId = XX;

// We get the node
$node = eZContentObjectTreeNode::fetch($nodeId);

// We have to clean the node path to send it to GGA
$path = '/' . $node->urlAlias();
$path = cleanPath($path);

//////////////////////////
// GOOGLE ANALYTICS PART
///////////////////////////

// We have to define start and end dates for GA queries. Here : the last 30 days.
$endTS = time() - (24 * 3600);
$startTS = $endTS - (30 * 24 * 3600);
$startDate = date('Y-m-d', $startTS);
$endDate = date('Y-m-d', $endTS);

// We will need a google account which have access to the google analytics report
$GoogleLogin = 'YOURGOOGLEACCOUNT@gmail.com';
$GooglePass = 'YOURGGPASSWORD';

$ga = new GoogleAnalytics($GoogleLogin,$GooglePass);

// set the date range we want for the report - format is YYYY-MM-DD
$ga->setDateRange($startDate,$endDate);

// We need your site id in GG Analytics
// In the old GG Analytics, you find it in the url of your report. Parameters id.
// eg : https://www.google.com/analytics/reporting/?reset=1&id=30773116&pdr=20111115-20111215
// id : 30773116
$ggAnalyticsSiteId = 'xxxxx';
$ga->setProfile('ga:'.$ggAnalyticsSiteId);

// We get the visit per day
$reportQuery = $ga->getReport(
 array('dimensions'=>urlencode('ga:date,ga:day,ga:month,ga:year'),
 'metrics'=>urlencode('ga:visits'),
 'sort'=>'ga:date',
 'segment'=>urlencode('dynamic::ga:pagePath=~^' . $path . '.*'),
 'v'=>'2.0'
 )
 );

//	here is your information !!
$result = prepareResults($reportRequest);

////////////
// Mini Lib
////////////

function prepareResults($results)
{
 // We make an array to get the total visits for the period + the detailed array for each day
 $preparedArray = array();
 $totalVisites = 0;
 foreach($results as $res)
 {
 $resDate = $res['ga:year'] . '-' . $res['ga:month'] . '-' . $res['ga:day'];
 $resTS = strtotime($resDate);
 $preparedArray[] = array( $resTS . '000', $res['ga:visits'] );
 $totalVisits = $totalVisits + $res['ga:visits'];

 }

 $results = array();
 $results['json'] = json_encode($preparedArray);
 $results['total'] = $totalVisits;

 return  $results;
}

function cleanPath($path)
{
 // Cleaning path to be able to search the path via a regex
 // NB we miss the \
 $trans = array(
 "#" => "\#",
 "!" => "\!",
 "^" => "\^",
 "$" => "\$",
 "(" => "\(",
 ")" => "\)",
 "[" => "\[",
 "]" => "\]",
 "{" => "\{",
 "}" => "\}",
 "?" => "\?",
 "+" => "\+",
 "*" => "\*",
 "." => "\.",
 "|" => "\|"
 );
 $path = strtr($path, $trans);
 return $path;
}

?>

La principale faiblesse de cette technique est que si le chemin du noeud parent change alors les stats sont faussées. Mais vous avouerez que ça n’arrive pas si souvent.

Petite couverture : j’ai testé ça sur un eZ Publish 4.1. Pas de raison que ça ne marche pas sur les versions suivantes mais enfin, on ne sait jamais …

Télécharger le code et la classe PHP / Download the script and the PHP class

 

Standard de microformat entre Google, Bing et Yahoo!

Manifestement le web reste encore relativement compliqué à comprendre pour les monstres de calculs que sont Google et Bing. Malgré leur “amitié” bien connue ils viennent de se mettre d’accord sur un standard de présentation des microformats. Toutes les infos se trouvent sur schema.org. Pour être très rapide, les microformats sont des attributs à coller dans vos balises HTML et qui permettent aux moteurs de recherches de cataloguer le type de contenu que ces balises contiennent. Exemple de présentation d’un film : on y précise son titre, son réalisateur, la date de naissance du réalisateur, le genre du film et où trouver la bande annonce.

 <div itemscope itemtype="http://schema.org/Movie">   <h1 itemprop="name">Avatar</h1>   <div itemprop="director" itemscope itemtype="http://schema.org/Person">   Director: <span itemprop="name">James Cameron</span> (born <span itemprop="birthDate">August 16, 1954</span>)   </div>   <span itemprop="genre">Science fiction</span>   <a href="../movies/avatar-theatrical-trailer.html" itemprop="trailer">Trailer</a> </div> 

Les 3 moteurs ont convenu d’une énorme liste de 267 types d’info. En voici quelques uns classiques et généraux :

Et quelques uns plus pointus :

Qu’est ce qu’on a à y gagner nous ? Et bien il y a des chances que nos sites apparaissent de manière customisée dans les résultats de recherche. Par exemple, voici comment peut apparaître un évènement utilisant le bon microformat. A noter que Google propose un outil de prévisualisation de rich snippets. Pratique pour voir à quoi pourrait ressembler votre page dans ses résultats. En gros Google et Bing galèrent un peu et nous demandent de faire une partie du taff. Pourquoi pas. On ne peut pas d’un côté saluer que les deux gros se mettent d’accord et d’un autre côté se plaindre qu’il y a un peu plus de boulout.

 

Le nouveau monde

Depuis hier j’ai vu et lu quelques articles et vidéos qui me mettent l’esprit en vrac. Ils ont tous un thème commun : les changements de la société à une échelle plus ou moins grande. Du plus général au plus précis :

  • Le désormais classique “Indignez-vous” de Stéphane Hessel que je vous ne présente pas.
  • Une intervention de Michel Serres dans Ce soir ou jamais. Il parle des énormes changements que connaissent la société et l’humain depuis un peu moins de 100 ans. Il écarte le champ trop restreint de l’économie et des nouvelles technologies. Il nous parle d’agriculture, d’exode rural, de médecine. Intéressant pour remettre à leur place Internet et les nouvelles technos qui nous occupent tellement la tête. L’idée que je retient est que le monde de demain est toujours imprévisible. Que de nouvelles formes d’organisations, de pouvoir émergent de manière discrètes et que parmi toutes ces initiatives certaines deviendront à terme la culture dominante.
  • Toujours Michel Serres donnant une conférence ayant pour sujet : Les nouvelles technologies : révolution culturelle et cognitive. Il compare les trois révolutions de l’information que sont l’écriture, l’impression et les TIC. Il explique que ces révolutions sont bien plus puissantes que l’invention du moteur ou d’autres avancées technos.
  • Un article d’OWNI à propos du Do It Yourself contenant énormément de vidéos et d’exemples de réalisations. L’article s’appelle : “La prochaine révolution, faites la vous même” et est écrit par Jean Marc Manach. Il met en lumière le fait que l’esprit open source et crowd sourcing du web est peu à peu en train de se diffuser au monde matériel. Si vous voulez voir des centaines d’exemples de réalisations je vous le conseille.

Tout ça me donnerait presque envie d’abandonner le web. Presque

Michel Serres dans Ce Soir Ou Jamais

Image de prévisualisation YouTube

Conference de Michel Serres

 

Firefox la feignasse

Voilà pourquoi Firefox est si lent. Rien à voir avec la RAM. C’est simplement qu’il n’arrête pas de manger des pousses de bambous ! Photo prise à Ocean Park à Hong Kong le 28 mai 2011. Le panda s’appelle Rou Rou.

 

Agriculture open source

Les pratiques open source du monde logiciel sont en train d’infuser au sein du monde matériel. Marcin Jakubowski explique lors d’une conférence TED le pourquoi et le comment de son wiki : Open Source Ecology. C’est top comme idée : fournir les plans de 50 machines permettant de rendre un village autonome : tracteur, four à pain, etc … Les machines produites sont peu chères, robustes et open-source. Voilà la vidéo :

 

A Propos

Bonjour et bienvenue sur mon blog. Je m'appelle Paul et suis un développeur web Français installé à Paris.

Cela fait quelques années que je fabrique des sites web pour les PME. D'abord chez EANET et maintenant à mon compte.

En plus de ce blog je tiens un compte Twitter et une page Facebook.

 Back to Top