28 octobre 2016

Tableau multidimensionnel en yaml

yaml & liquid

Cet exemple concerne Liquid mais pourrait tout aussi bien s’appliquer au language twig ou n’importe quel autre language de gabarit (smarty etc…).

Ici nous voulons afficher des couleurs css en fonction de la catégorie de l’article. Il nous faut donc un tableau de données yaml. Pour Jekyll il est dans le dossier _data. En javascript le tableau est de la forme

var laclasse = {blog: {Default: 'blue', Class1: 'blue', Class2: 'green' , Class3: 'pink', Class4: 'orn'}};
alert(laclasse['blog']['Class2']);
/* Renvoie green. */

Et voici le tableau en yaml équivalent.

#dans le fichier _data/css
laclasse:
  blog:
    - Class1: blue
    - Class2: blue
    - Class3: green
    - Class4: pink
    - Class5: orn

Pour accéder à un tableau associatif il faut parcourir le tableau deux fois. Et dans n’importe quel gabarit ici liquid


{% for classecss in site.data.css.laclasse.blog %}
	{% for categorie in classecss %}
	  {% if categorie[0] == 'Class2' %}
	    {% assign v_blogcolor = categorie[1] %}
	  {% endif %}
	{% endfor %}
{% endfor %}
# v_blogcolor = green

Chaque fois que l’on a un tableau imbriqué dans un tableau il faut donc le balayer deux fois.

Pour récupérer les données d’un fichier en particulier (ici un gabarit). On a défini la variable page.layout (dans un fichier de données jekyll en yaml) et on va récupérer la variable.

{% for unelement in site.data.monfichier %}
ou on peut passer une variable
{% for unelement in site.data.[page.layout] %}
On va balayer site.data.foo si page.layout = foo

Catégorie

Liquid

Vous aimerez aussi...