Fiche N°10 - Mettre un compteur de visites sur le sommaire

par manu

Objectif : Mettre en place un compteur de visites, et écrire une (petite) fonction en php

Attention : Pour que cette fiche puisse fonctionner, il vous faudra impérativement activer les statistiques des visites à partir de l’espace privé de SPIP

Créez une nouvelle balise : #TOTAL_VISITES

Écrivez le code ci-dessous dans un fichier appelé mes_fonctions.php, en respectant rigoureusement les consignes suivantes :

  • Ne changez pas le nom du fichier
  • Commencez le fichier par < ?php, et finissez-le par  ?> sans caractère additionnel : pas d’espace, ni de retour à la ligne en début ou en fin de fichier. [1]
  1. <?php
  2. // balise #TOTAL_VISITES
  3. function aff_total_visites() {
  4. $query = "SELECT SUM(visites) AS total_absolu FROM spip_visites";
  5. $result = spip_query($query);
  6. if ($row = spip_fetch_array($result))
  7. { return $row['total_absolu']; }
  8. else { return "0";}
  9. }
  10.  
  11. function balise_TOTAL_VISITES($p) {
  12. $p->code = "aff_total_visites()";
  13. $p->statut = 'php';
  14. return $p;
  15. }
  16. ?>

Comment ça marche ?

  • La première fonction demande à la base de données de faire la somme de tous les nombres se trouvant dans la colonne visites de la table spip_visites. Cette table garde en mémoire le nombre de visites du site, avec une ligne par jour.
  • La seconde fonction est appelée lorsque la balise #TOTAL_VISITES est rencontrée dans le squelette, et elle appelle la première.

Utiliser la balise dans le squelette

Par exemple en écrivant dans le fichier sommaire.html, juste après la boucle articles (ligne 50 environ) [2] :

  1. [(#REM) Compteur de visites ]
  2. <strong>#TOTAL_VISITES</strong> visites depuis <em>date de démarrage</em>

[1Si vous ne suivez pas la recommandation ci-dessus, vous risquez d’avoir des dysfonctionnements très gênants et apparemment sans rapport avec la choucroute. Voir par exemple ici

[2que vous aurez tout d’abord copié dans squelettes