7 choses à maitriser pour Google Analytics

Exclure le trafic interne pour une seule adresse IP :

Créer un filtre, lui donner un nom, le filtre est de type prédéfini, exclure, sélectionner la source, entrez l’adresse IP

{GIF Animé (ScreenToGif)}

N’oubliez pas de checker votre modification avec l’extension pour Google Chrome Tag Assistant Recording.

Magento Comment créer une boutique en mode multiboutique

Je suppose que l’installation de Magento est terminée, et qu’il y a déjà la boutique de base. On va ajouter une nouvelle boutique.

Pour être plus précis, Magento fait la distinction entre le site web, la boutique et la vue. Pourquoi une telle distinction? C’est pour répondre à toutes les événtualités, tous les besoins, car Magento veut brosser large et être la solution pour beaucoup de commerçants.

{image magento multiboutique}

 

Créer le site web

System > Manage Stores, puis on va supposer que l’on va faire la totale, c’est à dire créer un site web, une boutique et une vue. Donc créer une site web, puis créez un Store, et enfin créez une vue.

ensuite la méthode rcommandée est de modificer le .htaccess et ajouter les lignes suivante :

SetEnvIf Host electronic\.domaine\.fr MAGE_RUN_CODE=electronic
SetEnvIf Host electronic\.domaine\.fr MAGE_RUN_TYPE=website

Ensuite allez dans la configuration de Magento, choisissez le scope dans la liste déroulante, une fois sur votre boutique nouvellement créée, General puis Web, changez l’url avec l’url dans Secure et Unsecure, par http://electronic.domaine.fr et https://electronic.domaine.fr.

 

Il vous faut créer un virtualhost dans le fichier de configuration d votre serveur (pour Apache c’est dnas httpd.conf).

Ensuite, par défaut il n’y a aucun produit dans votre nouvelle boutique, il faut brosser manuellement les produit que vous voulez voir figurer dnas votre nouvelle boutique, allez dans le produit, dans l’onglet website, cochez la case correspondant à votre boutique.

Comment régler des prix différents d’une boutique à l’autre dans Magento

PAr défaut les prix des produtis sont gérés de façon globalde. Pour gérer au niveau site, et permetre d’avoir des prix différents par site web, aller dans Configuration > Catalog > Price, mettre le Scope à website.

Comment cacher des catégories sans article dans le multiboutique?

Aller dans la catégorie pour la boutique en question, et mettre isActive à No.

 

 

Comprendre le paramétrage de SuPHP

SuPHP est un module qui permet de d’exécuter des script php avec les permissions de leur propriétaire.

Par défaut, c’est l’utilisateur Nobody qui exécute les scripts php.

Le problème c’est que pour que Nobody puisse exécuter un script, il faut que le script php ait les droits 777, c’est à dire que tout le monde peut modifier le fichier, ce qui pose des risques de sécurité.

Donc SuPHP va interdire l’exécution des scripts php par le user nobody, et l’assigner en général au propriétaire du fichier.

Mais cela veut dire que chaque site web doit avoir un propriétaire?

En effet. Les panels d’administrations comme Virtualmin, lorsque que vous créez un virtual host, se chargent de créer un utilisateur sous Linux et donc un espace home pour ce même utilisateur. La racine site web est en général sous le répertoire /home/utilisateur/www.

Un truc en PHP 5.3 que vous ne pouvez plus faire en PHP 5.4 multi define de la même constante

EN travaillant sur un script ecommerce ultra pourri mais qui est en prod et que je dois migrer vers un serveur avec une version PHP 5.4, je me suis aperçu qu’il y avait une erreur loggée dans error_log : il y avait deux définitions de la même constante. Et le scrit ne tournait donc pas sur le serveur, puisque après un test, avec un script php où je définissait deux fois la même constante, sur 5.3 ça tournait sans problème, la constante était aussi (presque) malléable qu’une variable, voici le script :

<?php
define('TO', "bonjour");
echo TO;
define('TO',"au revoir");
echo TO;
?>

sous PHP 5.3

$ php test.php
bonjourbonjour

Bien que la constante puisse être redéfinie, sa valeur  ne change pas.

sous PHP 5.4

$ php test.php
bonjourPHP Notice:  Constant TO already defined in /home/user/test.php on line 4
PHP Stack trace:
PHP   1. {main}() /home/user/test.php:0
PHP   2. define('TO', 'au revoir') /home/user/test.php:4

On voit que le premier echo est exécuté, mais que le second déclenche une notice (ça peut être une erreur fatale).

Je pense que c’est une bonne chose (absolument !), soyons logique une constante ne peut être changée alors pourquoi autoriser la redéclaration? Heureusement que ça a changé et que PHP soit un langage plus rigoureux.

 

Bonus :

En PHP 5.3 vous pouvez utiliser un index d’un tableau qui n’existe pas sans qu’il vous geule dessus,

ainsi :

<?php
echo $p[0];

ne vous avertira rien.

 

 

 

 

 

 

 

 

Google Analytics Measurement protocole ou Google analytics côté serveur

Introduction au Measurement Protocol ou comment faire du Google Analytics côté serveur

Google analytic est un outil pour mesurer le trafic Web sur votre site web. Il nécessite de mettre un bout de code pour traquer les visites des internautes

Mais il est aussi possible d’envoyer les informations vers google analytics sans passer par un navigateur. Vous pouvez donc depuis un script côté serveur envoyer des informations vers Google analytic pour qu’il enregistre des informations
Pour ce faire nous devons utiliser une API qui s’appelle Measurement Protocol. Le principe est simple, il faut faire une requête de type POST vers le serveur de Google Analytics point

Je vais vous expliquer pourquoi connaître cet aspect de Google Analytics avec important, c’est relatif au tracking des achats sur votre site web. Dans le cas où le paiement s’effectue sur le site de la banque, et que le client revient sur votre site web, l’achat et suivi. Mais dans le cas où le paiement se finit et que la personne ne reviens pas sur votre site web, vous ne pouvez pas suivre les conversions.

Measurement protocol nous permet donc d’envoyer l’information comme quoi là ça a été réussi même si l’internat ne reviens pas sur votre site web après avoir payé sur le site de la carte bancaire

Le principe est simple, vous allez envoyer une requête vers le serveur de Google Analytics avec des paramètres bien défini, les paramètres doivent être au complet, sinon la requête échoue. Mais Google vous fournit à d’outils pour simuler et valider vos requêtes. cet outil c’est le Hitbuilder.

Mais d’abord nous allons voir un exemple très simple pour simuler une première requête vers le serveur de Google Analytics.

 

Il y a énormément de paramètres à envoyer car vous pouvez construire les mêmes requêtes que le script de Google Analytics sur le site web
Il vous faut vous référer à la page de documentation sur les paramètres pour voir la liste complète
Mais sans plus attendre faisant de notre première requête vers le serveur de Google Analytics
Il y a 4 paramètres obligatoire le premier paramètre concerne la version vous pouvez mettre ça n’a pas d’importance, le deuxième paramètre et le paramètre qui concerne le type de requêtes que vous allez vous allez faire , le plus simple c’est la pageview.
Le troisième paramètre est l’identifiant de votre compte Google Analytics et le dernier paramètres concerne le type de campagne pour simplifier nous allons mettre direct.

Voyons d’abord dans le HitBuilder comment nous allons construire à cette requête, dans un premier temps on construit les paramètres, en fait c’est la chaîne de paramètres que vous avez envoyer, ensuite vous allez cliquer sur le bouton Valider pour valider l’intégrité de cette requête et si tout se passe bien vous pouvez envoyer grâce à un bouton vers google Analytics la requête.

Pour visualiser le résultat de cette requête, basculer dans la vue temps réel de Google Analytics, vous aurez un retour immédiatement

Construire requêtes dans le Hitbuiler et cliquer sur Validate Hit

Créer une visualisation d’une page

 

Google analytics Measurement protocol tutoriel

 

Allez ensuite sur votre interface Google Analytics dans le rapport temps réel pour voir le résultat.

 

Étant donné que vous avez envoyé vraiment une requête vers votre serveur Google Analytics, les données Google Analytics de votre site de production seront affectées. Mais en développement vous pouvez vous permettre d’envoyer quelques données de test sans vraiment polluer les données de votre analytique.

Maintenant que l’on a réussi à envoyer une requête et à la visualiser grâce au graphique trafic temps réel de Google Analytics, on va essayer de faire une requête maintenant avec un script côté serveur. Attention, il y a un paramètre qui ne faut pas omettre et qui est le paramètre dp comme document path, je ne l’ai pas fait la première fois et aucune donnée n’a été envoyée,  ce n’est pas évident car si vous en mettez ce paramètre dans le tuto le HitBuilder, il va dire que la chaîne de requête est valide alors que aucune donnée n’a été envoyée, alors que dans la documentation de référence il est bien dit que dp et dh sont obligatoires dh étant le Host (nom de domaine).

Envoyer un Hit de type événement

Cette fonction est intéressante car se déroule dans un cadre plus large. En effet un événement peut être général, comme un clic sur un bouton, un slider, une durée de visionnage. C’est applicable non seulement aux application web mais aussi toute application, comme une application pour smartphone ou une application Windows.

Event tracking Google Measurement protocol

Requêtes dans le Hitbuilder de type transactionnelle

Bien que cet exemple soit très simple, le plus simple possible, il nous faut quand même 6 paramètres pour compléter la requête. Avant d’aller plus loin vers les scripts côté serveur, regardons quand même comment est fait une requête de type e-commerce et transactionnelle puisque c’est le but de cet article c’est-à-dire qu’on voudrait identifier les transactions e-commerce grâce à un script côté serveur.

Je prendrai l’exemple du logiciel de e-commerce PrestaShop. dans le logiciel Prestashop les transactions sont identifiées par le numéro de commande (et non le numéro de panier), par exemple pour une commande dont le numéro de panier est 3012, le numéro de transaction est 3012.

Dans Google Analytics, vous pouvez voir les transaction dans Conversion > Transaction.

Envoi d’une transaction

ti : transaction id

ta : transaction affiliation, ou le nom de la boutique

tr : transaction revenue,

ts : transaction shipping, frais de port

tt : transaction tax

cu : currency

Envoi d’un item

ti : transaction id, bien sûr si vous voulez que l’on sache dans quelle transaction cet item a été acheté !

in : item name

ip: item price

iq : item quantity

ic : item code (la référence de l’article)

iv : item category

cu : currency

Lorsqu’on envoie vers google analytics un item, il faut spécifier bien sûr le numéro de la transaction à laquelle il est associé vous spécifiez un sous-total, mais attention il faut que lorsque vous envoyez les items du panier, le total des items doit être cohérent avec le montant de la transaction, je vous laisse faire ça à côté serveur, tout ceci pour vous dire que vous pouvez avoir une incohérence entre la transaction le montant de la transaction est le total des items du palier, le système vous le permet.

Measurement Protocol Validation Server

 

Url de validation :
https://www.google-analytics.com/debug/collect?tid=fake&v=1
Elle ne diffère de la véritable url que de /debug/
Url d'envoi de requêtes :
https://www.google-analytics.com/collect?tid=fake&v=1

Lorsque vous forger une requête et de vous envoyer vers le serveur de Google analytic même si elle échoue n’aurait pas de message d’erreur en retour.
C’est pour cela que Google Analytics vous propose une adresse pour tester vos requêtes.

Attention j’ai noté que même si une requête est bien formatée et qu’elle ne retourne pas d’erreur en mode débogage, ceci ne veut pas dire que vous avez réussi votre requête. J’ai eu le cas où j’ai essayé pour une première fois d’envoyer une requête transaction où je n’ai pas inclu tous les paramètres « optionnels » , la requête n’a rien donné, j’ai vérifié en mode débogage j’ai eu un retour ok mais je n’avais toujours rien dans le rapport de Google Analytics.

Finalement j’ai relu la documentation j’ai pris l’exemple et j’ai réussi ma requête comme quoi il faut toujours se reporter à la documentation et bien la lire.

 

Beaucoup d’exemples de la documentation officielle pour aide mémoire des différentes type de requêtes.

Measurement protocol n’est pas limité au web, les applications Android peuvent utiliser l’API de Measurement Protocol. Les requêtes en  POST ainsi que GET peuvent être utilisées.

J’espère vous avoir aidé dans votre quêtes du tracking intégrale de toutes les transactions, en particulier les transaction de clients pressé (souvent en BtoB) qui ne reviennent même pas vers le site d’origine, tellement ils ont confiance en leur fournisseur.

Il est absolument important de pouvoir tracker toutes les conversion afin de mesurer le retour sur investissement des campagnes de marketing. Sans mesure on ne peut rien améliorer.

 

Cliquer sur le bouton vert pour envoyer la requêteEnvoi d’une transactionEnvoi d’un item de transaction

CSS Grid introduction et tutoriel débutant

Aujourd’hui je vais vous présenter une technologie CSS émergence qu’on utilisera dans les années à venir pour faire du responsive design

La technologie s’appelle le CSS grid
Aujourd’hui pour faire du responsive design en a besoin d’un framework CSS
Le premier des frémoire CSS qui permet de faire du responsive design et bootstrap
Ensuite il y en a eu d’autres j’ai plus utilisé par exemple UIKIT et sémantiqueUI.

 

Mais le problème que je t’ai rencontré été que c’est vrai moi qui était en constante évolution, et passer de l’un à l’autre de ces framework était assez fastidieux, car j’ai utilisé pas la même syntaxe

Pourtant on peut faire du responsive design en CSS pure mais c’est assez fastidieux
il y a les media queries qui vous permettent de réaliser le responsive design.

Mais comme vous le savez le CSS c’est assez difficilement lisible.

 

Bien sûr il y a des solutions comme le sac que vous transpirer en CSS mais ce n’est pas encore la solution idéale

Sans parler que le CSS a beaucoup de hack il faut utiliser pour avoir le même design sur tout les navigateurs

Puis est apparu la technologie flexbox qui résout un peu le problème

Mais cette dernière technologie est unidimensionnel et notre page est à deux dimensions

C’est pour résoudre ses problèmes que le CSS grid a été inventé pour l’instant seulement Google Chrome et Firefox l’ont implémenté

Magento comment mettre des produits sur la Homepage

A la différence des autres logiciels de ecommerce, avec Magento vous allez avoir du mal à mettre votre produit en page d’accueil, sans faire une manipulation bien particulière.

Afficher des produits d’une catégorie sur la page d’accueil

Allez sur la catégorie qui vous intéresse et regardez son ID vous en aurez besoin pour la suite.

Allez dans CMS > Pages > Home

Allez dans l’onglet Content et collez le bout de code suivant :

{{block  type="catalog/product_list" category_id="4"  template="catalog/product/list.phtml"}}

Update  !

Due à une mise à jour de sécurité, vous ne pouvez plus adopter cette méthode (plus exactement la SUPEE-6788), il faut toucher au xml du layout directement, donc dans la section Design de la page CMS, vous collez le bout de code suivant :


 

 

Magento Création de compte impossible, page qui se recharge

Ce problème arrive lorsque vous mettez un thème personnalisé, mais pas que.

Magento pour tous ses formulaire utilise une clé invisible et générée aléatoirement pour éviter le CSRF (Cross Site Request Forgery). Imginez que vous faites un site sur un domaine au hasard qui n’est pas le domaine hébergeant Magento, mais don l’action est une url du site Magento, ceci permettra à tout le monde d’envoyer des données sans être sur votre site.

Cette clé appelé formkey, générée aléatoirement par Magento (donc qui change tout le temps) et connu donc seulement de Magento évite ce type de piratage.

Sur une installation Magento dont la création de compte marche, allezsur le code source de la page et recherchez le mot form_key, c’est une valeur cachée d’un attribut de la balise form.

 <?php


?>

J’ai rencontré le problème sur un thème dont la création de compte ne marchait pas, cet attribut n’était pas présent. Si malgré la présence de cette clé secrète, la  création de compte ne marche pas, c’est un autre problème.

Pour résoudre ce problème il faut insérer une ligne de php :


 

Magento désinstaller un module manuellement

Il existe peu d’information pour désinstaller un module dans Magento, or il est préférable de la faire proprement.

Désintaller un module consiste à désactiver dans un premier temps le module et ensuite effacer les fichiers php, et les tables qui sont créée s’il y en a.

Commencez par désactiver le module

Regardez s’il n’a pas un script de création de table (il existe alors un répertoire sql au même niveau que /Helper ou /controllers)

Enlevez donc les tables correspondantes

la table Magento native core_resource peut contenir des informations des modules.

Effacer les fichiers dans app/code et app/design, /skin, /js

 

Par rapport à Prestashop, c’est vraiment pas top, Prestashop permet de désinstaller programmatiquement, inutile de s’emmerder avec toutes ces manipulations.