La météorologie ou création d’un PliciTag pas à pas !

QRcode:88

La neige devait tomber sur plici.net depuis ce matin 00h00.

Mais pourtant, rien ?

Pas assez de pluie ? Pas assez froid ? On ne sait pas vraiment...

Plus sérieusement, le script proposé la semaine dernière a un petit manque.

Car ce  script ne tiens pas compte d'un atout majeur de Plici : Son système de cache.

Plici possède un système de cache, cela lui permet de calculer une seule fois une page pour la servir à un Internaute. Ensuite, pour la seconde demande elle ne sera pas re calculé entièrement. Le cache permet de gagner en performance et en montée en charge.

Le script précédent est donc lu par Plici et servi au premier internaute. Comme il ne doit pas y avoir de neige pour le premier Internaute, il n'y en aura pas pour le second, jusqu'a ce que le système de cache soit remis à zéro.

Pour remettre le cache à zéro il y a plusieurs possibilités :

- Se connecter au super admin et vider le cache.

- Aller sur l'administration de son site et modifier une page.

Toutefois, si on fait cela, la neige tombera jusqu'au prochain vidage du cache !!

Alors, comment allons nous contourner cela ?

Nous pouvons très simplement le réaliser en créant un PliciTag de lien.

Créer un PliciTag c'est très simple :

- Créer le répertoire snow dans /view/site/my/monsite/plicitag/link/

-  Ensuite créer un fichier plicitag_snow.class.php

Si vous souhaitez créer votre propre PT (PliciTag), le nom du répertoire doit se retrouver dans le nom du fichier, ici c'est "snow".

Ensuite, on doit créer une classe PliciTag_snow

PHP:
  1. // force classe to not be loaded twice
  2. if (class_exists("PliciTag_snow")) return;
  3.  
  4. class PliciTag_snow extends xPliciTag {
  5.  
  6. // return to PLICI the informations about this PliciTag
  7. function getInformationsPliciTag() {
  8. $array = array(
  9. "version"        => "1.0.0",
  10. "name"            => "Faire tomber de la neige",
  11. "description"        => "Permet de faire tomber de la neige sur votre site.",
  12. "author"        => "PliciWeb Solutions (www.plicweb.com)",
  13. "wiki_url"        => "list_plicitag:link:detail",
  14. "code"            => ""
  15. );
  16. return $array;
  17. }
  18.  
  19. }

Il s'agit  ici d'une classe vide. Elle ne ferra rien.

On peut le tester par exemple.

Allez sur l'administration de votre site puis faites :

Onglet "Personnalisation" -> Bulle "Pages" => Lien "PliciTag"

Vous devez voir que l'on a bien le PliciTag "snow" qui existe.

Comme c'est un PliciTag de lien, on va l'activer :

Onglet "Personnalisation" -> Bulle "Pages" => Lien "Nouvelles Pages"

On nomme la page "Snow" (là on peut mettre ce que l'on veut), et à côté du titre de la page, on cliques sur "PliciTag".

Dans la zone de sélection qui s'affiche,  on choisit "Faire tomber de la neige".

Choisissez la position de votre page de manière à ce que ce soit dans une zone ou cela n'est pas d'impact.

Ensuite, vous pouvez créer votre page, le PliciTag est actif, le lien de cette page est remplacé par "Default used" car on n'a rien spécifié :)

Du coup maintenant, on va utiliser le wiki http://wiki.plici.net/documentation_developpeurs:documentation_sur_les_plicitag_modules pour créer le module que l'on veut.

Pour faire tomber la neige, on a besoin de quoi ?

En fait, il s'agit uniquement d'ajouter de l'HTML qui contient un script Javascript qui doit être lancé ou non en fonction de la période.

On va utiliser d'après le wiki la fonction replacePliciTag($params, $content, &$smarty) .

Elle va nous permettre de renvoyer de l'html et ainsi un script Javascript.

On va bien lire la description de la fonction :

*
Fonction « replacePliciTag($params, $content, &$smarty) »
o
Elle est appelée lors de l’affichage pour savoir par quoi on doit remplacer le PliciTag
o
Elle reçoit
+
$params (array)
#
Valeur minimum disponible
*
page_id
+
$smarty
#
Objet Smarty de l’affichage en cours
o
Elle renvoie le contenu qui sera affiché à la place du PliciTag
o
Par défaut, renvoi : "Default used"

Donc, on va renvoyer notre script.Alors, on va placer notre code Javascript (plici_snow_js.txt) dans /view/site/my/monsite/plicitag/link/snow/ et on y place aussi l'image de la neige : snow.gif.

Et on ajoute dans notre classe php la fonction replacePliciTag en y ajoutant le code PHP du post précédent sur le blog :

PHP:
  1. function replacePliciTag($params, $content, $smarty) {
  2. $javascript = "";
  3. global $g_object_siteinformation;
  4. $day = date('j');
  5. $month = date('n');
  6. if ($month == 12) {
  7. if ($day>= 15 && $day <28) {
  8. $javascript = file_get_contents(dirname(__FILE__)."/plici_snow_js.txt");
  9. }
  10. }
  11. return $javascript;
  12. }

Le fichier xxx.class.php devient :

PHP:
  1. // force classe to not be loaded twice
  2. if (class_exists("PliciTag_snow")) return;
  3.  
  4. class PliciTag_snow extends xPliciTag {
  5.  
  6. // return to PLICI the informations about this PliciTag
  7. function getInformationsPliciTag() {
  8. $array = array(
  9. "version"        => "1.0.0",
  10. "name"            => "Faire tomber de la neige",
  11. "description"        => "Permet de faire tomber de la neige sur votre site.",
  12. "author"        => "PliciWeb Solutions (www.plicweb.com)",
  13. "wiki_url"        => "l1/p281/plici_mod/dokuwiki/doku.php?id=list_plicitag:link:detail",
  14. "code"            => ""
  15. );
  16. return $array;
  17. }
  18.  
  19. function replacePliciTag($params, $content, $smarty) {
  20. $javascript = "";
  21. global $g_object_siteinformation;
  22. $day = date('j');
  23. $month = date('n');
  24. if ($month == 12) {
  25. if ($day>= 15 && $day <28) {
  26. $javascript = file_get_contents(dirname(__FILE__)."/plici_snow_js.txt");
  27. }
  28. }
  29. return $javascript;
  30. }

Après chaque modification du fichier classe de php, il est faut remodifier la page "snow" pour vider le cache.

En effet, on est en période de développement donc on doit vider le cache (si ça intéresse des développeurs, on pourra vous expliquer comment désactiver le cache en local).

Voilà, notre Plicitag fonctionne !

Ha ben il reste quand même une toute dernière chose :)

Le problème de cache :)

D'après le Wiki on dispose de cette fonction :

*
Fonction « getCanBeCachedPliciTag() »
o
renvoi TRUE (si le résultat de « getContent » peut être mis en cache)
o
renvoi FALSE (si le résultat de « getContent » ne doit pas être mis en cache)
o
Par défaut, renvoi : TRUE

On va l'utiliser pour désactiver le cache sur ce module, ce qui donne le code :

PHP:
  1. function getCanBeCachedPliciTag() {
  2.  
  3. return FALSE;
  4. }

Comme ça on n'a plus de cache pour ce module et il sera toujours calculé.

Mais comment on package un PliciTag pour le distribuer ?

Super simple :)

Il suffit de zipper le répertoire qui contient le module.

Dans notre cas, on doit obtenir un zip qui contient le répertoire "link" puis "snow" et les fichiers.

Voici le résultat du module packagé : plicitag_snow.zip.

J'espère que l'heure d'explication que j'ai passé à réaliser ce tutoriel pour les PliciTag saura servir :)

Stay tunned, snow ok :)

Laisser un commentaire

Vous devez être connecté pour publier un commentaire.