Marqueur phpMyVisites avancé

Petit retour d’expérience sur l’implémentation d’un marqueur de statistiques de visites phpMyVisites avec gestion de l’arborescence du site

Petit retour sur une implémentation du marqueur phpMyVisites.

Introduction

L’implémentation basique du marqueur n’affiche que des stats de visites basées sur l’url, nous avons essayé d’aller plus loin en reconstituant la hiérarchie des rubriques et articles SPIP, chose possible via le paramtre « pagename » du marqueur.

Exemple de rendu
Page de stats de visites sur l’arborescence d’un site SPIP

Gestion de l’arborescence

Au début de la page un include permet d’inclure le chemin du fichier :
<INCLURE{fond=chemin}{id_rubrique}{noeud=#TITRE}>
il y a 2 paramètres :

  1. pour les éléments de hiérarchie envoyer l’ « id_rubrique »
  2. le paramètre « noeud » permet de passer un titre quelconque (article, plan de site, contact ...)

Le squelette inclus « chemin » contient au minimum le code ci dessous

<script type="text/javascript">
<!--
var pagename=<BOUCLE_hierarchie2(HIERARCHIE){0,n}{tout}{id_rubrique}>['(#TITRE|supprimer_numero|texte_script)/'+]</BOUCLE_hierarchie2>'[(#ENV{noeud}|supprimer_numero|texte_script)]';
//-->
</script>

Détail du code : le chemin inclus dans la variable pagename est découpé en tronçons de javascript à cause de la limite de longueur des chaînes de Firefox (sans cela cela provoque une erreur javascript).

Complément possible : Cet include peut aussi générer le « fil d’ariane » du squelette à partir d’une boucle quasi identique.

<a href="sommaire.php3">Accueil</a>
<BOUCLE_hierarchie(HIERARCHIE){0,n}{tout}{id_rubrique}>
  [&nbsp;&gt;&nbsp;<a[ href="(#URL_RUBRIQUE)"]>(#TITRE|supprimer_numero)</a>]
</BOUCLE_hierarchie>
[&nbsp;&gt;&nbsp;(#ENV{noeud}|supprimer_numero)]

[*Ce code doit toujours figurer dans la page avant le marqueur lui même*] afin que le javascript du marqueur puisse lire la valeur du chemin.

[(! Attention le pagename doit toujours exister même à vide donc s’il n’y a pas d’inclusion du fichier chemin laisser dans la page un bout de code initialisant la variable javascript.)]

<script type="text/javascript">
<!--
var pagename=' ';
//-->
</script>

Le marqueur en pied de page

Enfin le pied de page inclus le marqueur phpMyVisites standard. à prendre en cliquant sur le lien javascript à intégrer dans la page d’admin du site sur phpmyvisite. Ensuite [*penser à commenter la ligne var pagename =*] pour ne pas écraser l’arborescence du chemin définie plus haut dans la page.

Idéalement mettre le pied de page dans un include à cache longue durée et sans paramètre ce code est statique

Exemple de javascript, à personnaliser en fonction de l’url de son serveur phpmyvisite (http://monserveur/phpMyVisites/) et de l’id du site à mesurer (phpmyvisitesSite = 3)

<!-- phpmyvisites -->
<a href="http://www.phpmyvisites.net/" title="phpMyVisites | Open source web analytics"
onclick="window.open(this.href);return(false);">
<script type="text/javascript">
<!--
var a_vars = Array();
//var pagename='';

var phpmyvisitesSite = 3;
var phpmyvisitesURL = "http://monserveur/phpMyVisites/phpmyvisites.php";
//-->
</script>
<script language=javascript src="http://monserveur/phpMyVisites/phpmyvisites.js" type="text/javascript"></script>
<noscript>
<p>phpMyVisites | Open source web analytics
<img src="http://monserveur/phpMyVisites/phpmyvisites.php" alt="phpMyVisites" style="border:0" />
</p>
</noscript>
</a>
<!-- /phpmyvisites -->

Voir aussi breve 52 pour plus de détails sur le fonctionnement et le paramétrage de phpMyVisites.

2 Plugins sur le même thème :
-  marqueur stats
-  phpmyvisites

Discussion

7 discussions

  • J’ai utilisé se code sur mon site woneb.net.

    Cela fonctionne trés bien. Merci beaucoup à toi ventrea.

    Répondre à ce message

  • Ajout :

    Je constate qu’il est impossible de faire apparaitre du « code » clairement ici...

    Voila le contenu de l’article suivant, en fichier texte, a telecharger de mon site !

    How to - ici....

    pascal

    Répondre à ce message

  • bonjour,

    voila mon experience SPIP/BEESPIP « complete » avec les 2 Plugins : « PHPMYVISIT » + « Marqueur phpMyVisites avancé » !

    1) Etat de mon installation SPIP :

    -  SPIP 1.9.2e [11132] le dernier en date en V1.9xx
    -  Squelette BeeSpip v.1.9.2 [353] + modification personnelle et mise a jour des Plugins inclus.

    -  « SI » hebergement chez FREE : Voir la note a ce sujet a la fin !

    2) Besoins necessaires a l’installation :

    - Installer le plugin comme les autres.
    - Juste un accès FTP est necessaire !

    3) PLugin « PHPMYVISIT » avec SPIP + BEESPIP : ( ca ne change pas si SPIP....)

    -  Telecharger de « preference » le dernier build, ca evite des erreurs et du temps perdu !!

    V1.9 - build SVN=15884 (le dernier a ce jour...)

    ici

    -  copier le plugin dans son emplacement : /plugins/phpmyvisites
    -  creer un dossier a la racine de votre site, nommé /include
    -  En plus, copier aussi directement le contenu du dossier local \phpmyvisites\libs*.* dans /include

    => vous obtenez /include/PEAR.php et /include/smarty + etc etc

    -  installez le plugin comme les autres....

    => A partir de la, les stats sont en place ! charger quelques pages et aller dans l icone « phpmyvisit » , zone

    « administration », menu « statistiques », puis « phpmyvisit »

    NB : Il faut parfois attendre un peu avant de voir apparaitre des stats !

    4) PLUGIN « Marqueur phpMyVisites avancé »

    A cette etape, ca se complique, car ce n’est pas un « VRAI » plugin qui est donné, et les explications sont « peu » claires

    helas.

    Apres beaucoup de temps passé a lire, chercher, essayer et « planter » mon site, j’y suis arrivé et je l explique ici !

    A) pour implementer « facilement » le plugin, seules quelques modifications sont necessaires :

    -  Fichier : /plugins/phpmyvisites/phpmv_fonctions.php

    modification a faire : Commenter la ligne concernant la variable « pagename » !

    Resultat :

    function phpmv_get_head()
    $i_site = 1 ;
    return ’

    <script type="text/javascript"><!--
    var a_vars = Array();

    <!-- Ajout Marqueur phpMyVisites avancé - Pascal -->
    <!-- var pagename=\’\’ ; -->

    var phpmyvisitesSite = '.$i_site.';var phpmyvisitesURL = "'.($url =

    generer_url_public('phpmyvisites','var_nophpmv=1',true)).'";
    //-->
    </script>
    <script src="'.url_de_base().find_in_path('spip_phpmyvisites.js').'" type="text/javascript"></script>

     ;

    B) Creer un nouveau fichier nommmé « inc_phpmyvisit.html » dans le dossier « includes » dans votre plugin « BEESPIP », utile au lieu de recopier a chaque fois le code javascript « identique » dans chaque page HTML !

    /plugins/beespip/includes/inc_phpmyvisit.html

    voila le code HTML + PHP, qui CORRIGE le bug lié au caracteres « speciaux » tel que mentionné dasn ce post. Exemple, les apostrophes. PB corrigé en utilisant le caractere #, a la fin, dans la balise #TITRE !!

    Contenu :

    [(#REM) Ajout Marqueur phpMyVisites avancé - Pascal ]

    <script type="text/javascript">
    <!--
    var

    pagename=<BOUCLE_hierarchie2(HIERARCHIE){0,n}{tout}{id_rubrique}>['(#TITRE*|supprimer_numero|texte_script)/'+]</BOUCLE_hierar

    chie2>'[(#ENV{noeud}|supprimer_numero|texte_script)]';
    //-->
    </script>

    C) Ensuite, il FAUT ajouter dans le squelette de « »« »« »chaque page« »« »« »" HTML utilisé, un entete qui definit la variable
    « pagename » avec le format désiré. Celui ci appele l INCLUDE que lon a creer, plus des parametres !

    Exemple :

    var pagename=’La Copropriété./’+’Descriptif de la copropriété./’+’Composition des batiments.’ ;

    donne comme resultat sur la page des stats, onglet « Page vues » :

    Note : La ligne « index » correspond a la consultation de la rubrique « elle meme », puiqu’il ne sagit pas d’un article propement dit, mais on sait le faire apparaitre quand meme !! par contre, le classement est MAL FAIT !!!


    + La Copropriété.
    + Descriptif de la cop (=>> BUG ici ! longueur trop courte hélas !!!)
    index
    Composition des batiments.

    index

    Resultat pour BEESPIP, page ARTICLE.HTML, modif APRES la ligne « .....inc_beespip_css.... » :


    Resultat pour BEESPIP, page RUBRIQUE.HTML, modif APRES la ligne « .....inc_beespip_css.... » :


    Resultat pour BEESPIP, page PLAN.HTML, modif APRES la ligne « .....inc_beespip_css.... » :

    <script type="text/javascript">
    <!--
    var pagename='<:plan_site:>.';
    //-->
    </script>

    Resultat pour BEESPIP, page sommaire-actu.html, modif APRES la ligne « .....inc_beespip_css.... » :

    <script type="text/javascript">
    <!--
    var pagename='<:beespip:actualites:>.';
    //-->
    </script>

    Idem pour TOUS les autres fichies que VOUS utilisez dans le site ! Si vous n’initailiser par la variable, vous aurez une erreur au chargement de la page, relatif a cet variable !!!!!

    PS : il y a sans doute moyen de faire plus simple, mais la CA MARCHE DEJA !


    5) Utilisateur de l herbegement FREE !!

    Attention, d’apres ce que j’ai pu lire plein de fois, FREE n’aprecie pas que l’on utilise PHPMYVISIT sur sa page PERSO pour

    limiter l’usage des bases SQL !!! Pour cela, il donne gratuitement l’outil PHPMYVISIT => Rien dans votre base a vous !
    Donc, ne pas installer le plugin PHPMYVISIT si vous etes chez FREE !

    En résumé, il faut « juste » ajouter le script JAVASCRIPT qui est donne par FREE et l ajouter dans toutes vos pages HTML !

    BASTA !!! En plus, les BUGs d’affichage dans l’onglet STAT de SPIP semble etre corrigé chez FREE !!!!

    Note : Je vais me fabriquer un PLUGIN « PHPMYVISIT+TAG » Special « FREE » !

    A suivre..............

    Mon site WEB, quand meme au passage

    OUF :-)))
    Merci de m’avoir lu.......

    Pascal

    Répondre à ce message

  • Bonjour,
    cela fait plusieurs jours que je galère pas mal pour crée l’arborescence du site (comme celle montrée en image)...

    Pourriez vous indiquer le code à copier ainsi que l’emplacement dans tel ou tel fichier car je suis un peu perdu, j’ai testé plusieurs solutions en vain.

    Merci beaucoup pour votre aide

    Répondre à ce message

  • 3

    Bonjour,

    Un article vraiment obscure que celui-ci...

    Aucune indications d’où placer ces codes cités, sauf pour le dernier « Le marqueur en pied de page », dans le squelette...enfin on le suppose.

    Quel est le rapport avec le « marqueur phpMyVisites » :
    -  est-ce par le rajout de ces codes je ne sais où, qu’on se fabrique cette fonction ?
    -  Est-ce un plugin ? qu’on installe, et donc puisqu’on parle de « Petit retour sur une implémentation du marqueur » est-ce une modification du code de ce plugin ?

    Bref pour moi, utilisateur de spip et bidouilleur façon copier/collé de code, l’article n’a ni queue ni tête.
    Pourriez-vous m’éclairer ?
    car j’aimerais vraiment pouvoir obtenir une « arborescence des pages vues » dans les statistiques de phpmyvisites.

    Ma config : SPIP 1.9.2a et phpMyVisites 2.2 (pas le plugin, installation séparée !)

    Merci.

    • ...Et donc ?

    • Ce n’est pas un plugin, juste un bout de code à poser « à la main » dans ses squelettes.

      L’idée de départ est de reconstruire une chaîne de texte reproduisant l’arborescence de rubriques pour l’envoyer en paramètre à phpmyvisites.

      var pagename=« Accueil/rubrique1/rubrique1.1/rubrique1.1.1/article »

      C’est le rôle de la boucle HIERARCHIE

      le reste est là pour gérer les cas particulier


      Pour faire plus simple il est possible de mettre en fin (avant /body) d’un squelette rubrique.html le code du marqueur javascript fourni par phpmyvisites et insérer dedans

      var pagename = <BOUCLE_hierarchie(HIERARCHIE){id_rubrique}> ['(#TITRE|supprimer_numero|texte_script)/' +]</BOUCLE_hierarchie>['(#TITRE|supprimer_numero|texte_script)';

      pour article.html mettre id_article à la place de id_rubrique

      les accents et caractères non standards peuvent poser pb à phpmyvisites parfois, il peut être nécessaire de créer un filtre qui fait le ménage dans les caractères de #TITRE si texte_script ne suffit pas.

    • Ah d’accord, je cible mon incompréhension ... je pensais qu’il fallait rajouter des boucles quelque part et...
      Bref, c’est très clair now !!
      Je comprend bien mieux, merci !!

      En reprenant le code sus-cité, çà ne fonctionne pas, mais en prenant celui du début d’article, c’est tout bon ! (j’ai pourtant omis le chiffre « 2 » ... sais pas à quoi il sert)
      Voilà ce que j’ai modifié dans le script phpMyVisites du fichier « rubrique.html »

      <!-- var pagename = document.title; -->

      var pagename=<BOUCLE_hierarchie(HIERARCHIE){0,n}{tout}{id_rubrique}> [’(#TITRE|supprimer_numero|texte_script)/’+] </BOUCLE_hierarchie>’[(#ENV{noeud}|supprimer_numero|texte_script)]’<small class="fine d-inline"> </small>;

      Par contre, pour le script phpMyVisites du fichier « article.html », changer id_rubrique en id_article ne suffit pas, et c’est ce qui m’a donné pas mal de recherches et essais avant de comprendre que çà fonctionnait à moitié, le chemin des rubriques étant indiqué, mais pas le nom de l’article, ... j’ai donc modifié la fin du code comme cela

      <!-- var pagename = document.title; -->

      var pagename=<BOUCLE_hierarchie(HIERARCHIE){0,n}{tout}{id_article}> [’(#TITRE|supprimer_numero|texte_script)/’+] </BOUCLE_hierarchie>’[(#TITRE|supprimer_numero|texte_script)]’<small class="fine d-inline"> </small>;

      Maintenant l’arborescence est renseignée, et en dessous, « index » est écrit s’il s’agit d’une consultation de rubrique, le nom de l’article s’il est consulté.

    Répondre à ce message

  • 1

    Personne n’a essayé d’appliquer cette méthode avec le plugin SPIP phpMyVisites ?

    J’aimerais savoir comment procéder, et en particulier comment éviter que le code phpMyVisites inclus automatiquement n’écrase la variable pagename.

    <!-- phpmyvisites -->
    <div style="display:none;">
    <script type="text/javascript">
    <!--
    var a_vars = Array();
    var pagename='';
    			
    var phpmyvisitesSite = 1;
    var phpmyvisitesURL = "http://www.mysite.org/spip.php?page=phpmyvisites&var_nophpmv=1";
    //-->
    </script>
    <script src="http://www.mysite.org/plugins/phpmyvisites_1_9/spip_phpmyvisites.js" type="text/javascript"></script>
    
    <noscript>
    <img src="http://www.mysite.org/spip.php?page=phpmyvisites&var_nophpmv=1" alt="phpMyVisites" class="phpmyvisitestag" />
    </noscript>
    </div>
    <!-- /phpmyvisites -->
    • En l’état actuel des choses je ne vois pas d’autre solution que de modifier le fichier phpmv_fonctions.php du plugin en commentant la ligne :
      var pagename=\’\’ ;

    Répondre à ce message

  • les liens vers les sources des plugins ont changé :
    -  phpmyvisites
    -  marqueur stats

    a+
    Ventrea

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom