Archive pour la catégorie 'Astuces Plici'

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

Monday 15 December 2008

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 :)

Les 10 derniers message du forum PunBB

Wednesday 10 December 2008

Le site www.tortue-terrestre.com dispose d'un forum punBB.

La personne qui s'occupe de ce site nous a demandé la création d'un module Plici qui affiche les 10 derniers messages de son forum.

C'est ainsi que nous vous annonçons la création d'un nouveau PliciTag.
Comme d'habitude, vous devez l'installer et l'activer sur votre site.

Ensuite, il suffit de taper sur la page désirée à travers l'interface d'administration :

HTML:
  1. [plicitag tag='postfrompunbb' to_strong='essai, mot_en_gras'][/plicitag]

Cela va automatiquement afficher les 10 derniers messages et mettre en gras les mots 'essai','mot_en_gras'.

Alors, qui est devenu fan de tortue par la même occasion ?

D'après google (taper "plicitag punbb"), il semblerait que le site suivant utilise aussi punbb dans Plici : http://www.parisbanlieuesud.com/
Peut être que ce module leur sera aussi utile.

Le module détaillé dans cet article est disponible dans la catégorie "Communautaire" de cette page http://www.plici.net/l1/p350-PliciTag.html.
Information pour les codeurs :

Comme d'habitude, une fois le module installé sur Plici, le fichier à modifier se situe dans /view/site/my/bdsite/plicitag/. Une fois dans cette arborescence, vous retrouverez les fichiers contenu dans le zip du module. C'est dans ces fichiers que vous pourrez modifier l'effet du module. Quelqu'un pourrait nous aider a rédiger une documentation sur les Plicitag et comment en créer ? Nous sommes prêt à vous former au travers du forum (connaissances nécessaires HTML,PHP, classes).

Stay connected !

Google map est cassé ?

Tuesday 2 December 2008

Dans la section partenaire de Plici, cela fait déjà plusieurs jours que la carte qui permet de les présenter ne s'affiche plus !

Il semblerait qu'il y ait eu quelques changements au niveau des API de Google Map et le module que nous utilisions semble ne plus être compatible.
Comme toute expérience est bonne à transmettre (vive l'Open Source) voici notre solution.

Pour le moment (au 02/12/2008) la librairie Phoogle n'est plus compatible avec Google Map.

Le site lui même avec ses exemples semble ne plus marcher :

screenshot001.jpg

Nous sommes certains que l'auteur va très vite corriger tout cela et nous vous invitons à utiliser Phoogle.

Toutefois, comme cette carte est relativement importante pour nous ainsi que pour nos partenaires, nous avons décidé de chercher un autre script php pour Google Map.

Finalement, nous avons trouvé le script GoogleMapApi qui fonctionne !

D'ailleurs, vous pouvez admirer le résultat sur la page des partenaires de Plici.

Il semblerait que la carte dispose effectivement de quelques modifications par rapport à celle que l'on avait précédemment.

Le petit plus que j'adore, ce sont les tooltip paramétrables :)
Stay tuned on Plici Network !

Comment déplacer mon moteur de recherche (ou des liens Plici) ?

Monday 29 September 2008

Sous Plici, un container est une zone qui va contenir un ensemble de liens.

Dans l'administration du site (quand on affiche les pages), cela correspond à "menu de gauche", "second menu de lien", "menu du haut", etc.

Sur le site plici.net vous remarquerez que le moteur de recherche est en haut ! Hors, vous avez bien vu qu’aucun thème Plici ne positionne de zone modifiable en haut vers le bandeau.

Alors, la question c’est : "Mais comment ont-ils fait ? ? ?"

Pour réaliser ce petit tour de magie, il suffit de savoir qu'il est possible de prendre un container est de l'afficher en double n’ importe où.

On peut le faire en 3 lignes dans un patron Plici :
{net_container container="CO_SUB_MENU"}
{include file="block_auto_container"}
{/net_container}
Cette commande va afficher le container "CO_SUB_MENU" directement dans le patron.
L'avantage de cette solution c'est que l'on peut facilement placer n'importe quel container n'importe ou ! (et en double :) )

Mais maintenant que l'on a cette astuce, le plus dur c'est de trouver le nom du container ! Quoi ? Vous n’aviez pas remarqué que c’était le plus compliqué ? Pourtant CO_SUB_MENU, cela ne semble pas évident non ? :)
Sur Plici rien n'est compliqué, il suffit de savoir où chercher. Pour trouver le nom du container, il faut se connecter au « Super Admin » et aller dans le menu : "Administration"=>"Pages"=>sélectionner la base de données puis l'onglet "vérification".

Une liste des containers et des pages apparaît et vous trouverez entre crochet le nom du container. Il ne vous reste plus qu’a choisir celui que vous voulez dupliquer (ou placer ailleurs).

Une fois le code placé, vous avez une zone de liens dynamiques en double. Pour éviter cela, placez le conteneur indésirable dans une zone non affichable.

Pour être plus clair, sur plici.net mon container CO_SUB_MENU est placé dans le bord gauche (qui est invisible :) ).

Bien entendu, il possible d'ajouter un nouveau container via le super admin "Administration"=>"Pages"=>sélectionner la base de donnée puis l'onglet "Conteneur".

Cependant cette méthode à un impact sur la base de donnée et il faudra le répercuter sur le serveur distant (mais on prévu le coup :) ).

Nous verrons cela dans un autre post.

Stay connected !

Astuce pour du Php sur Plici n’importe ou !

Friday 12 September 2008

J'ai eu besoin pour la nouvelle architecture du site plici.net (toujours pas en ligne) d'insérer du code Php un peu partout.
Mais voulant réaliser cela rapidement pour éviter de faire durer le suspens, je me suis dit comment faire ?

Prenons par exemple l'écriture de "Hello World" par le PHP.

screenshot008.jpg

Il y a 3 façons simples :

  • La première c'est dans le contenu d'une page à travers l'administration, vous saisissez  [plicitag tag='php'] echo('Hello World');[/plicitag]
  • Si vous désirez mettre du code PHP sur les bords du site. Il faut créer une page, la placer et sélectionner le Plicitag "html" (hein ? mais ce n’est pas logique :) ). Hé bien si, car dans l'html vous tapez : [plicitag tag='php'] echo('Hello World');[/plicitag] Et ça marche !
  • L'astuce précédente pouvant poser des problèmes avec le cache, la troisième solution est tout aussi simple. Vous allez sur http://monsite/ et vous tapez http://monsite/?plici_debug=true. Ainsi, il est facile de trouver quel patron vous allez devoir modifier. Une fois que vous l'avez identifié ajoutez dans ce patron  [plicitag tag='php'] echo('Hello World');[/plicitag]

Voici des exemples pour écrire 'Hello World', mais j'entends au loin que ça n'a aucun intérêt. (Si si, je l'entends :) ).
Je suis tout à fait d'accord, mais si vous remplacez le code par :

Membres du forum :
[plicitag tag='php']global $g_object_loader; // récupération de l'objet qui charge les objets de Plici
$o_dbconnexion =& $g_object_loader->getDbConnexion(); // Récupération de l'objet qui gère les connexions à la base de donnée
$request = "SELECT count(*) as member_count FROM z_plimo_smf_members;"; // Requête qui va utiliser les tables du forum SMF
$params = array(); // Tableau de paramètres de ma requête
$result = ""; // Résultat de la requête
if (!($o_dbconnexion->makeSqlQuery($request, $params, $result))) { // Test si tout va bien
while($row = mysql_fetch_assoc($result)) { // Récupération des éléments
echo($row['member_count']); // affichage du nombre de membre
}
}
[/plicitag]

En mettant ce code, on peut afficher le nombre de membres sur le forum n’ importe où sans avoir déposé le moindre fichier sur le serveur :) Et sans avoir perdu de temps.
A bientôt,