Thelia 2 est maintenant disponible. Retrouvez toutes les informations ici
Thelia 2 is now available. Find all the information here

Comment créer un module Thelia - partie 4

Le blog TheliaFlux rss


< Interview : L’agence Meedle Interview : La Bonne Pointure >
2013
18
février

Comment créer un module Thelia - partie 4

par Manuel Raynaud

Dans cette nouvelle partie nous allons apprendre la mécanique des boucles et mettre en place celles de notre plugin.

Pour rappel, vous pouvez consulter la partie 1, partie 2, partie 3 du tuto.
La dernière partie du tuto est disponible : partie 5


Les boucles sont la particularité de Thelia, qui le différencie des autres CMS du marché. Ces boucles facilitent grandement l’intégration.

Thelia est livré avec les boucles nécessaires pour faire fonctionner une boutique en ligne, mais il est bien souvent nécessaire, pour coller aux demandes spécifiques, de créer de nouvelles boucles. Les plugins sont donc là pour ça !


Comment fonctionne une boucle ?

Les boucles Thelia vont tout simplement répéter une portion de code autant de fois que nécessaire. Une boucle est bien sûr paramétrable et retourne différentes informations.

Les paramètres d’entrée sont les variables passées dans la boucle, permettant de construire la requête qui ira chercher les informations demandées. Les paramètres de sortie sont les substitutions que vous connaissez sous la forme #QUELQUECHOSE.

Si vous faites votre propre boucle, vous pourrez définir vos paramètres d’entrée ainsi que les informations retournées.

Une boucle récupère le texte et toutes les informations de mise en forme contenues entre l’ouverture et la fermeture de la boucle. Si la boucle ressort des résultats, elle effectuera les substitutions présentes, sinon elle retournera une chaîne vide.


Pour créer votre propre boucle il faut d’abord créer la méthode boucle dans la classe de votre plugin. Elle a la signature suivante :

  1. public function boucle($texte, $args)

- $texte contient la partie du template qui se situe entre l’ouverture de la boucle et sa fermeture
- $args contient les paramètres d’entrée de la boucle

Pour lire les paramètres d’entrée, il faut utiliser la méthode lireTag qui prend en paramètre la variable dans laquelle doivent être recherchés les paramètres (donc dans le cas d’une boucle la variable $args), leurs noms et leurs types (int, string, etc).


Avec tous ces éléments, faisons maintenant notre boucle.
Elle aura en paramètre entrant l’id d’un produit et en paramètre de sortie l’id du commentaire, le titre et le message. Le paramètre entrant va nous permettre de construire la requête qui ira interroger la table commentaire du plugin. Si le paramètre id est vide, une chaine vide est retournée :

  1.     public function boucle($texte, $args)
  2.     {
  3.         $id = lireTag($args, "id", "int");
  4.        
  5.         if(empty($id)) return;
  6.        
  7.         $return = "";
  8.        
  9.         $query = "SELECT id, titre, message FROM ".$this->table." WHERE actif=1 AND produit_id=".$id;
  10.        
  11.         foreach ($this->query_liste($query) as $result) {
  12.             $temp = str_replace("#ID", $result->id, $texte);
  13.             $temp = str_replace("#TITRE", $result->titre, $temp);
  14.             $temp = str_replace("#MESSAGE", $result->message, $temp);
  15.            
  16.             $return .= $temp;
  17.         }
  18.        
  19.         return $return;
  20.     }

Comme vous l’avez remarqué, nous passons par une variable temporaire, le temps de faire les substitutions. Cela permet de ne pas perdre le texte original sans substitutions, sinon au deuxième tour de boucle les paramètres #QUELQUECHOSE ne seront plus présents.


La méthode query_liste est une autre méthode permettant de communiquer avec la base de données, elle prend en paramètre la requête et retourne un tableau. Chaque entrée du tableau représente une ligne de la table, sous forme d’objet. Il est possible de spécifier en deuxième paramètre le nom d’une classe à instancier et peupler avec les résultats. Nous aurions donc pu passer "Commentaire" en second paramètre mais cela s’avère inutile dans notre cas, nous n’avons en effet pas l’utilité d’utiliser cette classe.


Nous pouvons à présent commencer à compléter notre fichier readme du plugin expliquant le fonctionnement de la boucle. A vous de le faire et d’intégrer la boucle dans votre template !


Dans la prochaine partie, qui sera la dernière, nous verrons comment packager et soumettre un plugin sur l’espace de contribution. Nous verrons aussi quelques fonctions utiles que nous n’avons pas encore utilisées.

N’oubliez pas, vous pouvez vous aider du plugin sur github : https://github.com/thelia/commentaire _

tags : trucs et astuces


Ajouter un commentaire

Ce forum est modéré à priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.

Nos
partenaires



Contactez
Thelia


Pour toutes questions concernant Thelia, vous pouvez nous contacter :

contacter Thelia par téléphone par téléphone au 04 44 05 31 00

Contacter Thelia e-maiol par mail à l'adresse info@thelia.net

April Oséo FEDER