Передача нескольких переменных в jekyll include и определение того, какие из них назначены


На веб-сайте jekyll я пытаюсь использовать include как универсальный шаблон, передавая несколько переменных; не всегда все из них, не всегда одно и то же количество переменных.

Со страницы я хочу сделать следующее:

{% include multi-purpose.html var1='foo' var2='ble' var3='yea' %}

Когда я делаю это в включить.html , и когда var1 имеет значение, он работает:

var1 is {{ include.var1 }}

В файле include я хочу иметь возможность различать, какие переменные назначаются, делая что - то вроде это:

{% if var1 != null %}
    this is my var1 {{ include.var1 }}
{% endif %}

{% if var2 != null %}
    this is my var2 {{ include.var2 }}
{% endif %}

{% if var3 != null %}
    this is my var3 {{ include.var3 }}
{% endif %}

etc...

К сожалению, мой синтаксис неверен, этот код не отображает код внутри операторов if.

Я также попробовал это:

{% if var1 != '' %}
    this is my var1 {{ include.var1 }}
{% endif %}

{% if var2 != '' %}
    this is my var2 {{ include.var2 }}
{% endif %}

{% if var3 != '' %}
    this is my var3 {{ include.var3 }}
{% endif %}

etc...

Это одно представляет все, независимо от того, назначено оно или нет.

Спасибо за помощь!

2 3

2 ответа:

Чтобы получить доступ к передаваемым переменным из include, вам нужно префиксировать их include.
везде в поле Включить!

Измените это:

{% if var1 != null %}

К этому:

{% if include.var1 != null %}

{% if var1 ... не работает, потому что он проверяет наличие" локальной " переменной (объявленной внутри include) с именем var1 (которого, конечно, не существует).

Как объяснено в ответе Митя, вам не нужно проверять наличие null или '', но вам все равно нужно проверьте {% if include.var1 %}, а не {% if var1 %}!

Просто проверьте вот так:

{% if var1 %}