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
{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-pathLes 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
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}
- 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.
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)