Je ne vois pas ces données dans les rapports. J’utilise le plugin Data Explorer. Quelle requête me donnerait le nombre de pages vues uniquement pour nos utilisateurs par semaine, en excluant l’activité des robots d’indexation et les membres du personnel de notre forum, mais en incluant les pages vues anonymes ?
Est-ce que quelque chose comme ceci fonctionnerait ?
Prendrait-il en compte les vues anonymes ?
De plus, existe-t-il un moyen de convertir cela en rapport ?
-- [params]
-- string :date = '2020-01-01'
WITH t AS (
SELECT date(:date) AS START
),
f AS (
SELECT id as user_id
FROM users u
WHERE u.moderator = 'True' or u.admin = 'True'
)
SELECT
date_part('year', viewed_at) as year,
date_part('week', viewed_at) as week,
COUNT(topic_id) AS topics_viewed
FROM topic_views, t
WHERE viewed_at > t.START
AND user_id not in (select f.user_id from f)
GROUP BY year, week
ORDER BY year, week
Oui, telle qu’elle est écrite, elle compte les vues anonymes. Pour les vues de sujets anonymes, l’user_id sera NULL et l’ip_address sera NOT NULL. Vous pouvez exclure les vues anonymes en ajoutant la condition suivante à la requête :
AND user_id IS NOT NULL
Cela pourrait être réalisé via un plugin. Le plugin Discourse Solved ajoute un rapport au tableau de bord administrateur. Il pourrait y avoir du code dans ce plugin qui servirait d’exemple pour ajouter un rapport : discourse-solved/plugin.rb at main · discourse/discourse-solved · GitHub.
Donc, quelque chose comme ça ? L’adresse IP serait donc nulle pour les robots d’indexation ?
Je souhaite inclure :
les visiteurs anonymes
les utilisateurs connectés
Je souhaite exclure :
les robots d’indexation
les utilisateurs du personnel
-- [params]
-- string :date = '2020-01-01'
-- boolean :staff = false
WITH t AS (
SELECT date(:date) AS START
),
f AS (
SELECT id as user_id
FROM users u
WHERE u.moderator = 'True' or u.admin = 'True'
)
SELECT
user_id,
-- date_part('year', viewed_at) as year,
-- date_part('week', viewed_at) as week,
COUNT(topic_id) AS topics_viewed
FROM topic_views, t
WHERE viewed_at > t.START
AND ((ip_address is not null AND user_id is NULL) OR
user_id not in (select f.user_id from f))
GROUP BY user_id
ORDER BY topics_viewed DESC
-- GROUP BY year, week
-- ORDER BY year, week
Le rapport « Vues de page » interroge la table application_requests. Cette table ne fournit aucune donnée pour filtrer les vues du personnel. Ce qu’elle renvoie, c’est un total du nombre de requêtes de chaque type par jour. Le champ req_type est renvoyé sous forme d’entier. Les entiers sont associés au type de requête selon les règles suivantes :
La table topic_views utilisée par votre requête renvoie au maximum une entrée par utilisateur ou adresse IP, par jour et par sujet. Ces données ne peuvent pas être utilisées pour suivre les vues de page : il peut y avoir plusieurs requêtes d’application pour une seule vue de sujet.
Je vois. Donc, essentiellement, il n’est pas possible d’exclure les utilisateurs du personnel pour obtenir des chiffres précis de pages vues (PV).
Je tente ma chance : est-il possible d’exclure certaines catégories (je suppose que non) ? Nous avons des catégories privées réservées uniquement à l’équipe interne et nous ne souhaitons pas qu’elles faussent nos chiffres de PV utilisateurs.
Je ne vois aucun moyen d’exclure le personnel des données fournies par la table application_requests. Il n’est pas non plus possible de filtrer les résultats de cette table par catégorie. Si vous essayez d’obtenir des données sur l’utilisation de votre site, la table topic_views que vous utilisez dans votre requête initiale vous donnera des données précises sur la façon dont votre site est utilisé, mais ces données ne correspondront pas à ce que vous voyez dans le rapport Vues de page.