Application Google analytics pour Novius OS

Il y avait longtemps que je ne vous avais pas parlé de Novius OS non ? Aujourd’hui ce qui nous amène c’est une petite application que j’ai conçue pour ajouter facilement un code de suivi google analytics dans l’importe quel site Novius OS.
Cette application a été faite pour que madame Michu puisse l’utiliser. On va donc procéder en deux parties : une première pour dire comment l’utiliser, une autre pour expliquer plus techniquement comment elle fonctionne.

Comment l’utiliser

Pour que n’importe qui puisse utiliser cette application, j’ai fait en sorte que l’utilisateur final, à savoir l’administrateur d’un site tournant sous NOS n’ait presque rien à faire.

Il y a donc trois ou quatre étapes pour que l’application Google Analytics fonctionne :

  1. Installer la lib_options qui est utilisée par l’application Google Analytics.
  2. Installer l’application Google Analytics.
  3. Ajouter votre identifiant UA ou le script entier que vous fournit Google dans le formulaire accessible par l’écran d’accueil de votre back office.
  4. Répéter l’étape 3 pour l’ensemble de vos contextes si vous en avez plusieurs (vous pouvez choisir votre contexte via le sélecteur en haut à droite du formulaire).

Une fois ceci fait, vous pourrez voir une belle balise script apparaître en dessous du tag <body> de votre site (c’est un endroit un peu étrange, mais c’est là que google dit qu’il faut la mettre). N’oubliez pas de vider le cache de vos pages web si besoin est.

Comment ça marche

En back office

Comme je l’ai dit précédemment, l’application  nécessite l’application lib_options pour fonctionner. La raison est très simple : c’est la lib_options qui va générer le formulaire de configuration de Google Analytics ainsi que gérer la prise en charge des contextes. L’application Google Analytics est donc très light du point de vue de son code en BO. Le point intéressant reste donc la prise en charge du front.

En front office

Première problématique pour le front : l’application doit se lancer toute seule. Il ne faut pas que l’utilisateur ai à insérer un enhancer dans chacune de ses pages. Ce serait juste l’horreur. Pour ce faire, il suffit que l’application Google Analytics étende l’application page de Novius OS. Comme cela elle se lancera dès que le moteur aura besoin des pages, ce qui est parfait pour une application dont le but est justement de s’introduire sur toutes les pages.

Deuxième point : quand et comment fait-on pour “l’introduire” dans toutes les pages sans aller directement dans le template ? Et bien rien de plus simple grâce à l’événement “front.display”. Cet événement est déclenché quand la page appelée est prête à être affichée, mais avant que le cache soit enregistré. La fonction renvoyée par l’événement nous donne le html qui va s’afficher. On a donc plus qu’à insérer notre script à l’endroit opportun et le tour est joué !

Pour les curieux, voici le code :


Event::register_function('front.display', function(&$html)
{
    //Rechercher la config du context. Si elle existe on envoie ce qu'il faut.
    $context = \Nos\Nos::main_controller()->getContext();
    $config = Bru\Google\Analytics\Controller_Admin_Config::getOptions();
    $config = $config[$context];
    $full_script = '';
    if ($config['full_script'] != '') {
        if (\Str::starts_with($config['full_script'], '<script')) {
            $full_script = $config['full_script'];
        } else {
            $full_script = '<script type="text/javascript">';
            $full_script .= $config['full_script'];
            $full_script .=        
 }
    } else if ($config['google_analytics_tag'] != '') {
        $full_script = \View::forge(
 'bru_google_analytics::js_tag', 
 array('tag' => $config['google_analytics_tag'])
 );
    }

    if ($full_script === '') return false;

    //No script if it's a preview
    if (\Nos\Nos::main_controller()->isPreview()) {
 $full_script = '<!--'.$full_script.'-->';
 }

    preg_match("/<body[^>]*>/", $html, $matches);
    if ($matches[0]) {
        $html = str_replace($matches[0], $matches[0]." \n".$full_script."\n", $html);
    }
});

2 commentaires sur “Application Google analytics pour Novius OSAjoutez votre →

    1. Oui oui.
      C’est la lib_options qui gère ça.
      Elle permet d’enregistrer des données pour chaque contexte individuellement. Que le site NOS soit multi-site, multi-langue ou les deux à la fois. 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *