Site visit
Cette action permet de comptabiliser le nombre de visites de l'article où figure le shortcode.
Elle permet également d'afficher le nombre de visites pour toutes ou partie des pages selon l'option info du shortcode

Elle n'a pas vocation de remplacer les grands ténors de l'analytique,
mais offre une solution rapide pour évaluer la renommée d'un article.
A l'origine, j'ai écrit cette action pour connaitre les popularités respectives des différentes actions de UP.

Cette action ne prend pas en compte les pages affichées par des composants

 

🆙 site_visit : comptabilise le nombre d'appel de cette action et affiche le nombre de visite

Cliquer pour lire la documentation

syntaxe :
{up site-visit} : incrémente le fichier log-path/alias_article.stat
{up site-visit=nom} : incrémente le fichier log-path/nom.stat
{up site-visit | info} : liste le contenu de tous les fichiers .stat dans log-path
{up site-visit | info=xxx} : liste le contenu de tous les fichiers action-xxx.stat dans log-path
Les données sauvées dans xxx.stat sont ##alias## : le nom du fichier, puis dans l'ordre :
##counter## : le cumul des visites
##lastdate## : la date dernère consultation
##id##, ##alias##, ##title##, ##created##, ##updated## : données de l'article
##catid##, ##catalias## : id et alias de la catégorie de l'article
##detail## : affiche le détail des visites par année, mois, langue
@version: UP-2.9 @author: lomart @license: GNU/GPLv3 @tags: Expert

    Options principales

    • site_visit: nom du compteur, si vide = alias article (si info=0)
    • catid-include: liste des id catégories à inclure, séparateur virgule
    • catid-exclude: liste des id catégories à exclure, séparateur virgule
    • usergroup-list: liste des groupes d'utilisateurs à exclure, séparateur virgule
    • ip-list = 127.0.0.0, localhost: liste des IP à ignorer. les botnets sont ignorés, séparateur virgule
    • bots-list = bot,spider,crawler,libwww,search,archive,slurp,teoma,facebook,twitter: liste de bots exclus

    Options pour affichage résultats

    • info: masque des fichiers stat et log dont le contenu est listé. vide = article courant, * = tous ou masque fichier
    • info-template = ##counter## visites au ##lastdate##: modele d'affichage
    • info-catid-include: liste des catégories prise en compte
    • info-sort: tri de la liste. Par défaut ##alias##. Tous les mots sont utilisables
    • info-sort-order = asc: sens de tri sur l'ensemble des mots-clé de info-sort
    • detail-period-style: style ajouté pour la période de la liste détaillée
    • use-bbcode: utilise le format bbcode dans le résultat. A utiliser pour un export en CSV
    • date-format = lang[en=%B %se, %Y;fr=%e %B %Y]: format pour la date
    • no-content-html = "lang[en=No statistical data;fr=Aucune donnée statistique]": message affiché si aucun résultat pour la sélection

    Gestion style d'une ligne

    • item-tag: balise pour les lignes de la liste
    • item-class: classe pour les lignes de la liste
    • item-style: style pour les lignes de la liste

    Gestion style du bloc principal

    • main-tag (block): balise pour la liste
    • id: identifiant
    • class: classe(s) pour bloc
    • style: style inline pour bloc
    • css-head (base-css): style ajouté dans le HEAD de la page

    Pour webmaster - à ajouter dans le fichier prefs.ini

    • log = 1: argumente un fichier nom_compteur.log avec IP, langage et date
    • dir-logs = up/site-visit: dossier pour logs

    ATTENTION, cette action va évoluer en essayant de conserver une compatibillité

    Les premiers tests en situation réelle m'obligent à revoir cette action.

    Comme elle est très récente, et sans doute non ou peu utilisé, je vais essayer de réutiliser les fichiers générés mais pas les options du shortcode.

    Un exemple simple

    Pour connaitre le nombre de vues de cet article, ce shortcode suffit :

    {up site-visit | info | class=bd-rouge p1 | main-tag=span}
    Aucune donnée statistique
    site-visit

    Aucun argument n'est requis dans le contexte d'affichage des visites

    info

    L'option info sans argument demande l'affichage des visites pour l'article en cours

    Pour avoir toutes les pages ayant des stats, il  faut indiquer un masque de sélection sur le nom des alias des articles. Exemple : * pour tous les articles, foo* pour les articles dont l'alias commence par foo

    class, main-tag

    des options classiques de UP auxquelles vous devez être habitués maintenant.

     

    Activer le comptage

    Pour afficher des stats, il faut dans un premier temps activer cette fonction à l'aide du shortcode {up site-visit}

    Gestion du cache

    Il est indispensable de désactiver le cache de Joomla pour avoir un comptage correct.

    La solution que j'utilise sur ce site est de mettre ce shortcode dans un module personnalisé (LM-Custom ou le module de base de Joomla), en position debug et en ayant pris soin de désactiver le cache dans l'onglet "Avancé"

    Pour l'affichage des résultats, un léger retard peut être accepté.
    Pour s'en affranchir, ajouter le shortcode {up cache-cleaner=com_content} après celui de {up site-visit | info}
    Cela a pour effet de supprimer le cache pour tous les articles. A utiliser avec modération !
    Note
    : n'utilisant pas cette astuce sur cette page, il faut attendre 15 minutes pour que les chiffres évoluent. Inutile de rafraichir la page 😀

    Un shortcode qui demande l'affichage avec l'option info ne comptabilise pas les visites. Cela évite de doublonner avec un shortcode dans un module.

    Par défaut, la page est mémorisée sous le nom de son alias (forcement unique !). Vous pouvez spécifier un nom. Ce qui pourrait permettre de regrouper plusieurs pages. Cette possibilité existe, même si j'en vois moins l'intérêt. Son usage est proscrit si le shortcode est dans un module. 

    Plusieurs options permettent de limiter le comptage :
    catid-include, catid-exclude

    La liste des ID des catégories à inclure ou à exclure du comptage. ex: 10,25

    usergroup-list

    La liste des groupes d'utilisateurs dont la visite ne sera pas comptabilisée.

    ip-list

    Les adresses IP à ne pas prendre en compte. Un bon complément à l'option usergroup-list qui demande d'être connecté.

    bots-list

    La liste des robots qui ne sont pas vraiment des visiteurs.
    La liste de base est : bot,spider,crawler,libwww,search,archive,slurp,teoma,facebook,twitter

     
    Je vous conseille de paramétrer ces options directement dans le fichier  plugins/content/up/actions/site_visite/custom/prefs.ini

    Outre le fait de ne pas avoir à les saisir à chaque fois, cette méthode permet d'appliquer une modification à toutes les actions en activité.
    Il devient beaucoup plus simple de compléter la liste des IP ou des robots

    Paramètres experts

    log

    Par défaut, uniquement le total des pages vues et la date de la dernière consultation sont mémorisés. Les visiteurs uniques ne sont pas pris en charge.

    Cette option demande de comptabiliser le nombre total de pages vues ainsi que le nombre de visiteurs. Une seule visite jour est comptabilisée pour une même IP.

    Elle est activée par défaut, mais vous pouvez la désactiver pour économiser la place disque. Notez qu'un mécanisme de compactage automatique regroupe les nouvelles visites pour le jour en cours par langage et IP, puis par mois pour l'année courante avec seulement une ventilation par langage. Au début d'une année, les mois de l'année précédente sont regroupés.

    dir-logs

    Le stockage des compteurs est fait dans des fichiers situés dans le dossier 'up/site-visit'.
    Cette option permet de changer cet emplacement en l'indiquant dans le fichier prefs.ini pour qu'il s'applique à l'ensemble du site.

    Afficher les résultats

    C'est bien beau de compter les visites, mais c'est encore mieux de savourer la popularité de son site.

    Comme nous l'avons déjà vu, il suffit d'ajouter l'option info pour passer dans ce mode.

    Plusieurs options sont consacrées à ce mode

    info

    Sans argument, il affiche les résultats pour l'article en cours. Le shortcode peut être dans un article ou dans un module.

    Pour avoir toutes les pages ayant des stats, il  faut indiquer un masque de sélection sur le nom des alias des articles. Exemple : * pour tous les articles, foo* pour les articles dont l'alias commence par foo

    info-catid-include

    Un autre moyen de limiter les pages concernées est d'indiquer la ou les ID des catégories désirées

    info-template

    Pour mettre en forme le résultat, on utilise un template avec des mots clés. Le bbcode est admis et même encouragé. Nous verrons quelques exemples par la suite.

    • ##counter##  : le cumul des visites
    • ##lastdate## : la date dernière consultation
    • ##id##, ##alias##, ##title##, ##created##, ##updated## : les données de l'article
    • ##catid##, ##catalias## : id et alias de la catégorie de l'article
    • ##detail## : affiche le détail des visites par année, mois, langue. Il s'agit des données étendues mémorisées par l'option log
    info-sort
    info-sort-order

    Par défaut, les résultats sont affichés dans l'ordre alphabétique de l'alias des articles.

    Vous pouvez utiliser les mots-clés pour indiquer votre préférence. Exemple : info-sort=##catalias## ##alias## pour trier par catégorie puis par alias.

    Par défaut, l'ordre est ascendant, mais vous pouvez l'inverser globalement par l'option info-sort-order=desc

    detail-period-style

    Les données retournées par le mot clé ##detail## se présentent sous la forme : période (fr:200/100 en:30/10). Soit l'année, le mois ou la date du jour, suivi du total des pages affichées et du nombre de visiteurs uniques identifiés par leur IP.

    Cette option peut contenir des classes et des styles qui seront appliqués à la période. Exemple: color:#333;bg-jaune

    date-format

    Permets de choisir le format d'affichage des dates. On utilise le format de la fonction (obsolète) PHP strftime qui sera converti pour être PHP8 compatible.

    %y:AA, %Y:AAAA, %m:01-12, %b:mois 3 lettres, %B:nom mois, %d:01-31, %e:1-31, %a:joursem 3 lettres, %A:(Lmin) jour sem, %U:N° semaine, %l:heure (1-12) AM/PM - L minuscule, %I:heure (01-12) AM/PM - i majuscule, %k:heure (0-23), %H:heure (00-23), %P:am/pm, %p:AM/PM, %M:minute (00-59)

    no-content-html

    Message affiché si aucune donnée n'est trouvée. Le BBCode est encouragé.

    idées de shortcodes

    Je ne vais pas mettre de démo de cette action pour plusieurs raisons :

    • l'affichage du compte-rendu des visites demande beaucoup de ressources (600 fichiers à analyser pour ce site). Cette fonction n'a de sens que pour les administrateurs du site.
    • l'action étant récente, je n'ai des données que pour un mois. Je préfère donc mettre des copies d'écran des simulations réalisées pour tester la fiabilité du code.

    Par contre, l'affichage des statistiques non détaillées pour un nombre de pages limité est possible.

    Un exemple simple
    Aucune donnée statistique
    {up site-visit
     | info 
     | info-template=
        {up lang
          | fr=La page "##title##" a reçu [b class="fs120"]##counter##[/b] visites au ##lastdate##
          | en=The "##title##" page received [b class="fs120"]##counter##[/b] as of  ##lastdate##
        }
    }

    L'appel de l'action avec l'option info sans argument affiche les données pour l'article courant.

    Je demande une mise en forme des données avec l'option info-template qui accepte le bbcode.
    J'utilise l'action lang pour définir le rendu en français et en anglais

    Un autre exemple simple
      Aucune donnée statistique
    {up site-visit | info=*csv*
     | info-template=##title## : [b class="fs120"]##counter##[/b] au ##lastdate##
     | main-tag=ul | item-tag=li
    | class=ph2 bd-bleu}

    On affiche tous les articles dont l'alias contien le mot csv.
    info-template spécifie la mise en forme.
    main-tag et item-tag indiquent que l'on veut le résultat sous la forme d'une liste.
    class encadre le résultat avec une bordure bleue et un padding horizontal

    Un exemple pratique pour analyser la fréquentation

    Pour votre utilisation de webmaster, je vous conseille cette forme qui vous permet de :

    • trier les résultats en cliquant sur le titre de la colonne
    • de rechercher rapidement un ou plusieurs articles en filtrant sur leur titre ou catégorie
    titre
    Aucune donnée statistique
    {up table-sort | col-type=a-n-a-n-a-n-a-a-a}
      {up csv2table | model=line
       | header=titre;nbre;à la date du;id;alias;catid;catalias;created;modified
       | col=x-c5-x-c5-x-c5
      | col-style-2=color:red;font-weight:bold} {up site-visit | info=*csv* | info-template=##title##;##counter##;##lastdate##;##id##;##alias##;##catid##;##catalias##;##created##;##modified## } {/up csv2table} {/up table-sort}

    L'action site-visite retourne les données dans un format csv grâce à l'option info-template. Ici, j'ai limité les articles retournés à ceux ayant le mot csv dans leur alias

    L'action csv2table récupère les données de site-visit pour les présenter sous la forme d'une table. l'option header précise le titre des colonnes, col donne le format des colonnes (x=rien, c5=largeur 5% centré) et col-style-2 donne les règles CSS pour la 2e colonne

    Pour finir, table-sort ajoute des possibilités de recherche et de tri à cette table. L'option col-type indique le type de tri pour chaque colonne

    Un exemple avec des données détaillées

    Pour cette démo, dont vous voyez une copie d'écran ci-dessous, j'ai fabriqué un fichier log sur mesure pour avoir un test sur 2 années.

    Si les 4 premières colonnes sont identiques aux exemples précédents, la cinquième affiche le détail des visites :

    • globalement pour les années précédentes à l'année en cours
    • mensuellement pour les mois précédents celui en cours
    • journellement pour aujourd'hui. Les test a été fait le 10 décembre 2022

    Pour chaque période, nous avons le détail par langage du navigateur du visiteur. Le premier nombre est le nombre total de vues et le second est le nombre de visiteurs uniques (identifié par leurs IP). 

    {up table-sort | col-type=a-n-a-a}
      {up csv2table | model=line
       | header=alias;nbre;dernière;catalias;détail | col=10-c5-c10-10}
        {up site-visit | info=presentation
         | info-template= ##alias##;##counter##;##lastdate##;##catalias##;##detail##
         | date-format=%Y-%m-%d
         | detail-period-style=color:red | use-bbcode}
      {/up csv2table}
    {/up table-sort}

    Les shortcodes ressemblent beaucoup à l'exemple précédent.

    Pour cette démo, j'utilise uniquement l'article pour la page d'accueil de ce site dont l'alias est "presentation".
    Le template demande la vue détaillée avec le mot-clé ##detail##
    L'option date-format permet un affichage plus compact pour la date.
    L'option detail-period-style permet de style la période dans la vue détaillée. use-bbcode demande à l'action site-visit de renvoyer les balises avec le style au format bbcode pour qu'il puisse être compris par l'action csv2table.

    Le fichier "presentation.log" est rempli par {up site-visit} à chaque visite de la page avec la date et heure de la visite et la langue et l'IP du navigateur client.

    Pour les besoins de la démo, j'ai saisi quelques données sur une période de 2 années.

    Avant d'afficher le résultat, l'action commence par compacter les données par périodes et langues avec uniquement le total des pages vues et celui des visiteurs uniques.
    Pour la journée en cours, on conserve une ventilation par langue et IP.

    Cette méthode permet d'alléger les fichiers de suivi et anonymise les IP qui ne sont conservées que l'intervalle de temps entre 2 affichages des résultats.

    Pour info, cette page utilise 25 action(s) :
    box (1) upactionslist (1) div (2) flexauto (6) site-visit (4) csv2def (4) icon (1) listup (1) lang (1) table-sort (1) csv2table (1) readmore (1) jcontent-info (1)