> Ben donne-le le code (ou bien la démarche à faire) ça peut pas mal
> interesser de spinautes en effet.
Je vais essayer de vous montrer ça !
C'est basé sur la version 1.4c5.
Partie 1 : SQL
Bon, commençons par le plus facile : d'abord j'ai ajouté un champ
'popularite' dans la table des articles, du type 'float'
Attention, cette modif serait à intégrer dans l'installation de SPIP,
sinon obligation de modif manuellement la base de donnée pour toute
nouvelle installation.
Partie 2 : AJOUT D'UNE BALISE #POPULARITE
-------------------------------------------------------
Ensuite, modification des fichiers. Mes modifs y sont encadrées entre
commentaires //TP> et //<TP (mes initiales, ça me permet de reporter mes
modif dans la prochaine version de spip). La ligne originale, s'il y en
a une, est copiée et mise en commentaire. Les nos de lignes sont
approximatifs, +/- 5
-------------------------------------------------------
Fichier inc-calcul-squel, ligne 223
if ($table) {
if ($type == 'articles') {
//TP>
// $s = "$table.id_article,$table.id_rubrique,$table.id_secteur,$table.surtitre,$table.titre,$table.soustitre,$table.date,$table.date_redac,$table.visites,$table.statut,$table.accepter_forum";
$s = "$table.id_article,$table.id_rubrique,$table.id_secteur,$table.surtitre,$table.titre,$table.soustitre,$table.date,$table.date_redac,$table.visites,$table.statut,$table.accepter_forum,$table.popularite";
//<TP
-------------------------------------------------------
Fichier inc-calcul-squel, ligne 792
$c = array('NOM_SITE_SPIP', 'URL_SITE_SPIP',
//TP>
'POPULARITE',
//<TP
'ID_ARTICLE', 'ID_RUBRIQUE', 'ID_BREVE', 'ID_FORUM', 'ID_PARENT', 'ID_SECTEUR', 'ID_DOCUMENT', 'ID_TYPE',
-------------------------------------------------------
Fichier inc-calcul-squel, ligne 865
$rows_articles = array(
//TP>
'POPULARITE' => 'popularite',
//<TP
'ID_ARTICLE' => 'id_article',
'ID_RUBRIQUE' => 'id_rubrique',
-------------------------------------------------------
Partie 3 : CALCUL DE POPULARITE
Fichier inc-stats, function ecrire_stats : là je vous la livre en
intégrale
function ecrire_stats() {
global $HTTP_REFERER;
global $id_article;
global $admin_ok;
$my_ref = $HTTP_REFERER;
$my_ref = "\n".substr(md5($my_ref), 0, 15);
$query = "SELECT visites, referers, (to_days(now())-to_days(date))
as age FROM spip_articles WHERE id_article=$id_article AND
statut='publie'";
$result = spip_query($query);
if ($row = mysql_fetch_array($result)) {
$visites = $row['visites'];
$referers = $row['referers'];
$visites++;
$age = ($row['age']);
$popularite = $visites / $age;
$popularite = Round ($popularite * 10) / 10;
if (!ereg($my_ref, $referers)) {
$referers .= $my_ref;
spip_query("UPDATE spip_articles SET
visites=$visites, referers='$referers',
popularite='$popularite' WHERE
id_article=$id_article");
}
else {
spip_query("UPDATE spip_articles SET
visites=$visites, popularite='$popularite' WHERE
id_article=$id_article");
}
$num_ref = strlen($referers) / 16;
if ($admin_ok) echo "<small>[$visites visites - $num_ref referers - $popularite visites/jours]</small>";
}
}
-------------------------------------------------------
Et voilà, je n'ai pas encore adapté la consultation des stats dans la
zone admin. Si une bonne âme peut le faire...
Statistiquement,
Thierry
Le Fri, 9 Aug 2002 13:53:32 +0200
"mdivol" <mdivol@netcourrier.com> a écrit:
> Bonjour,
>
> Ben donne-le le code (ou bien la démarche à faire) ça peut pas mal
> interesser de spinautes en effet.
>
> A+
>
> Michel
>
> www.ouvaton.coop
> L'hébergement à 1 euro par mois !
> ----- Original Message -----
> From: "Thierry Portmann" <thierry66ch@gmx.net>
> To: <spip@rezo.net>
> Sent: Friday, August 09, 2002 1:25 PM
> Subject: Re: [Spip] Popularité
>
>
> > Ca m'intéresse !
> >
> > En fait, j'ai déjà modifié quelque peu mon spip à moua pour tenir compte
> > d'une popularité.
> >
> > Car pour moi, c'est inutile d'additionner des visites de pages, les plus
> > anciennes auront forcément plus de visiteurs que les récentes, et ça ne
> > m'avancera pas plus pour connaître quels sont les articles à succès.
> >
> > Alors j'ai ajouté un champ dans une table qui s'appelle popularité, qui
> > n'est rien d'autre que le nombres de visites divisé par l'age de
> > l'article en jours. ça donne mathématiquement des [visites/jours], et
> > pour moi, c'est une sorte d'index de popularité, c'est suffisant.
> > Le champ est mis à jour lors des visites des articles.
> > J'ai ajouté une balise spip #POPULARITE.
> >
> > Si quelqu'un à un algo de calcul de popu plus raffiné... !!!
> >
> > cordialement
> > Thierry
> >
> > Le Thu, 8 Aug 2002 15:45:39 +0200
> > "Troll" <troll@dionysos.org> a écrit:
> >
> > > Les differentes demandes concernant la notation des articles par les
> visiteurs
> > > n'ont pas trouvé des masses d'echo.
> > > Son résultat pourrait pourtant intervenir dans le critère de
> popularité
> > > (déjà très intéressant! Thank's Arno), qui deviendrait
> > > une pondération entre visites, refferers, age et notation...
> > > Ce serait aussi un pas vers un systeme de vote, qui devrait
> intéresser pas mal de monde, non?
> > > Même si celà en a dégouté bien d'autres.... 
> > > Qu'en pensez vous, quelqu'un a t'il déjà fait qq chose dans le
> genre?
> > > Merci, bonne continuation, Pierre
> > >
> > > Ps, Si vous trouvez une grande barraque au bord de la mer,
> > > spip@ rezo.net
> > > Même si ya pas de téléphone, on se débrouille!
> > >
> >
> >
> >
> > Thierry
> >
> > mailto:tpo@gmx.net
> >
> > _______________________________________________
> > liste spip
> > spip@rezo.net - désabonnement : spip-off@rezo.net
> > http://listes.rezo.net/mailman/listinfo/spip
> > Documentation de SPIP : http://www.uzine.net/spip
> >
Thierry
mailto:tpo@gmx.net