Comprendre les boucles

Publié le


De nombreux CMS et Framework, vous obligent à connaitre le langage de programmation PHP, quel que soit votre profil (développeur, intégrateur, etc...).

En effet, pour insérer les données présentes en base de données dans vos pages, vous devez faire cohabiter HTML et PHP dans le même fichier. C'est par exemple le cas de Wordpress.

Thelia se démarque de ces outils en offrant une façon de coder vos templates qui ne demande pas forcément ces connaissances (même si c'est un plus).

Qu'est-ce que les boucles ?

Si l'on examine une table d'une base de données, on s'aperçoit que ce n'est en fait qu'une liste de données. Par exemple, une table qui stocke des produits, comporte X lignes de produits.

Si vous avez quelques notions de MySQL et PHP, vous savez que la récupération des données se fait en plusieurs étapes.

  1. - Création de la requête SQL
  2. - Exécution de cette requête
  3. - Affichage des résultats grâce à une boucle PHP (foreach, while, etc...)

La notion de boucle dans Thelia (qui existe aussi dans d'autres outils tels que Spip) va permettre de passer de 3 à 1 étape en gardant un code HTML plus propre.

En effet, la seule étape que vous aurez à effectuer est la mise en place de la boucle en question. Elle s'occupera de faire le listing des éléments que vous voulez récupérer elle-même en fonction des arguments que vous lui donnerez.

Mise en place d'une boucle

Prenons l'exemple d'une boucle simple :

Partons du principe que l'on souhaite récupérer tous les produits de notre boutique, la boucle correspondra à ceci :

{loop name="product.list" type="product"}
    {* Affichage d'une ligne correspondant à un produit *}
{/loop}

Ici, le seul argument que l'on renseigne est le nom de la boucle : name="product.list" cet argument est obligatoire à chaque utilisation d'une boucle et doit être unique au sein d'un même template. Il permet tout simplement d'identifier votre boucle.

Certains arguments n'ont pas été spécifiés et pourtant ils sont utilisés.

En effet, chaque boucle peut posséder des arguments par défaut. Par exemple la boucle product possède comme arguments par défaut :

  • force_return
  • complex
  • depth
  • with_prev_next_info
  • visible
  • attribute_non_strict_match
  • order

Je vous laisse lire la documentation en ligne pour connaitre le rôle de chaque argument ainsi que leur valeur par défaut.

L'important à retenir et à bien comprendre, c'est que le code qui sera inclu dans cette boucle sera répété autant de fois qu'il y a de produits correspondants aux arguments fournis.

Les arguments de sortie d'une boucle

Ces arguments sont plus communément appelés des variables. C'est elles qui vous permettent de récupérer les valeurs retournées par la boucle.

Par exemple, pour la boucle produit, vous pouvez récupérer le nom d'un produit grâce à la variable {$TITLE}. Il vous ait ensuite tout à fait possible d'effectuer des traitements sur ces variables mais nous verrons cela dans un autre tutoriel ;-)

Vous pouvez bien entendu imbriquer plusieurs boucles, par exemple :

{loop name="product.category" type="category" id="1"}
    {loop name="product.list" type="product" category=$ID}
        {* Affichage de mes produits inclus dans la catégorie n°1 *}
    {/loop}
{/loop}

Et là vous allez me dire : Et si ma boucle ne trouve aucun résultat ?

Alors dans ce cas, il faudra utiliser le {ifloop} ou le {elseloop} de Thelia.

Les boucles conditionnelles

Il est possible d'effectuer du code si votre boucle retourne des résultats grâce à {ifloop} :

{ifloop rel="product.list"}
    {* Mon code si ma boucle retourne des résultats *}
{/ifloop}

Mais il est aussi possible de détecter que votre boucle n'a pas retournée de résultat :

{elseloop rel="product.list"}
    {* Mon code si ma boucle ne retourne pas de résultat *}
{/elseloop}

Dans ces deux cas d'utilisation, vous voyez que l'argument rel est présent. C'est un argument obligatoire, qui doit avoir pour valeur, la valeur de l'argument name de la boucle à tester.

Allez plus loin

De nombreuses boucles sont présentes dans Thelia, n'hésitez donc pas à lire la documentation pour les connaitre et apprendre à les utiliser.

Astuce : J'ai créé un dépôt Github nommé thelia-phpstorm qui permet d'inclure des raccourcis dans l'IDE PhpStorm, afin d'écrire les boucles Thelia (mais pas que !) plus rapidement. Bonne utilisation !

Ajouter votre commentaire

Les commentaires

Search