web-dev-qa-db-fra.com

Affecter un littéral de tableau à une variable dans Liquid Template

Le seul moyen que je connaisse pour créer un tableau à partir de mon modèle liquide est:

{% assign my_array = "one|two|three" | split: "|" %}

Y a-t-il un autre moyen de le faire?

32
Stefano Ortisi

Frontmatter

Ceci est une bonne solution de contournement, ajoutez en haut de votre fichier:

---
my_array:
  - one
  - two
  - three
---

puis utilisez-le comme:

{{ page.my_array }}

Analogue pour le site site.data.my_array large sur le _config ou sous _data/some_file.yml.

Mise à jour de Jekyll 3 pour les mises en page

Si la face avant est celle d'une mise en page, vous devez utiliser:

{{ layout.style }}

au lieu. Voir: https://stackoverflow.com/a/37418818/895245

Y a-t-il un autre moyen de le faire?

Nope, votre filtre split est le moyen de le faire.

8
Bart Kiers

Voici une autre façon de le faire en utilisant tout d'abord capture comme moyen convivial d'affecter des valeurs séparées par une ligne à une variable, puis en convertissant cette variable en tableau avec assign et quelques filtres:

{% capture my_array %}
one
two
three
{% endcapture %}

{% assign my_array = my_array | strip | newline_to_br | strip_newlines | split: "<br />" %}

Les filtres ont les propriétés suivantes:

  1. strip supprime les espaces blancs avant one et les derniers espaces après three.
  2. newline_to_br remplace les nouvelles lignes par les balises <br />.
  3. strip_newlines supprime les nouvelles lignes superflues possibles.
  4. split convertit la chaîne en tableau, en utilisant <br /> comme séparateur.
0
Asbjørn Ulsberg