Aide > Thèmes Personnalisés

Logique

Balises

  • assign — assigne une valeur a une variable
  • capture — balise de bloc qui capture du texte dans une variable
  • case
  • comment — Commente le code
  • cycle
  • for — boucle
  • if — if/else standard
  • unless — miroir de if

  • include — permet d'inclure un snippet
  • layout — permet d'affiche le template courant dans un autre layout que celui par défaut

Opérateurs

You can use different operators when using logic statements ...

  • == — Égal
  • != — Non égal
  • > — Plus grand que
  • < — Plus petit que
  • >= — Plus grand ou égal à
  • <= — Plus petit ou égal là
  • or — "ou"
  • and — "et"

If / Elsif / Else

Exemples :

{% if blog_post.accepts_comments? %} <h2>Poster un commentaire</h2> [...] {% else %} <p>Les commentaires sont fermés.</p> {% endif %} {% if category.slug == 'shirts' and product.price > 999.99 %} Merci d'acheter des t-shirts à prix élevé ! {% endif %}

Case

Exemple :

{% case condition %} {% when 1 %} a touché 1 {% when 2 or 3 %} [a touché 2 ou 3] {% else %} a touché quelquechose d'autre {% endcase %}

Cycle

Exemples :

{% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %} {% cycle 'one', 'two', 'three' %} résultera en one two three one

Si aucun nom est donné pour le groupe "cycle", il est assumé que plusieurs appels avec les mêmes paramètres sont un seul groupe.
Si vous souhaitez avoir un contrôle complet sur les groupes, vous pouvez de façon optionnelle préciser un nom de gruope. Il peut être variable.

{% cycle 'groupe 1': 'one', 'two', 'three' %} {% cycle 'groupe 1': 'one', 'two', 'three' %} {% cycle 'groupe 2': 'one', 'two', 'three' %} {% cycle 'groupe 2': 'one', 'two', 'three' %} résultera en one two one two

Boucles "for"

Exemple :

{% for item in array %} {{ item }} {% endfor %}

Durant chaque boucle, les variables d'aides sont accessible :

forloop.length # => length of the entire for loop forloop.index # => index of the current iteration forloop.index0 # => index of the current iteration (zero based) forloop.rindex # => how many items are still left? forloop.rindex0 # => how many items are still left? (zero based) forloop.first # => is this the first iteration? forloop.last # => is this the last iteration?

Il y a plusieurs attributs pour influencer quels éléments que vous souhaitez recevoir dans votre boucle :

  • limit:[int] permet de restreindre le nombre d'éléments que vous aurez.
  • offset:[int] permet de commencer à boucler sur l'élément n°X.
# array = [1,2,3,4,5,6] {% for item in array limit:2 offset:2 %} {{ item }} {% endfor %} # résulte en 3,4

Changer le sens :

{% for product in products reversed %} {{product.name}} {% endfor %}

Au lieu de boucler autour d'un tableau existant, vous pouvez définir un rayon de nombres à boucler.
Le rang peut être défini de façon litérale ou avec des variables :

# si quantity = 4... {% for i in (1..quantity) %} {{ i }} {% endfor %} # résultera en 1,2,3,4

Assignement de variables

Vous pouvez mettre des données dans vos propres variables.
La façon la plus simple de créer une variable est avec la balise "assign" :

{% assign right_price = 42 %} {% for product in products %}{% if product.price == right_price %} <p>The price is right!</p> {% endif %}{% endfor %}

Si vous souhaitez combiner plusieurs chaînes dans une seule et l'enregistrer dans une varaible, vous pouvez le faire avec la balise "capture". Cette balise est un bloc qui capture tout ce qui est généré à l'intérieur, et l'assigne au nom de variable au lieu de l'afficher.

{% capture picture_html_id %}picture_{{ picture.id }}{% endcapture %} <img src="{{picture.url}}" alt="" id="{{picture_html_id}}" style="display:none" /> <a href="javascript:$('#{{picture_html_id}}').show();return false;">Afficher l'image</a>