Jekyll Liquid如果语句混乱

时间:2018-12-31 22:09:56

标签: html if-statement logic jekyll liquid

我试图根据我的markdown帖子的液体标题使if语句起作用,如果变量设置为true,则执行某项操作;否则,如果变量不存在,则执行另一项操作。只是似乎无法使其正常工作。

我尝试将if语句更改为private IEnumerator OnCollisionStay2D(Collision2D collision) { if (collision.collider.tag == "mama") { //interrupt movement float currentTime = Time.time; float madBegin = Time.time; while (currentTime - madBegin < 3) { personAnimator.runtimeAnimatorController = Resources.Load("Animations/human1mad_0") as RuntimeAnimatorController; currentTime = Time.time; Debug.Log(currentTime); } isAngry = true; } yield return new WaitForSeconds(5); } 。尝试currentTime的不同组合并交换图像代码。

{% unless %}

我希望看到:如果降价文件液体部分中的!= false设置为true,请删除横幅图像的边框。

1 个答案:

答案 0 :(得分:0)

没有page.no-borderpost.no-border的捕获标记将返回一个空字符串,该字符串的值为true,因为除了falsenil以外的所有液体值都是真实的。试试这个(或类似的东西):

{% capture banner %}{{ page.banner }}{{ post.banner }}{% endcapture %}
{% capture title %}{{ page.title }}{{ post.title }}{% endcapture %}

{% if page.banner or post.banner %}
    {% if page.no-border or post.no-border %}
        <img class="center no-border" src="{{ banner }}" alt="{{ title }}"/><br/>
    {% else %}
        <img class="center" src="{{ banner }}" alt="{{ title }}"/><br/>
    {% endif %}
{% endif %}

这都是未经测试的,您可以通过几种不同的方式来完成它。

编辑:澄清

详细说明:

capture是一个函数。它计算内部的内容,并将其作为字符串存储在变量中。如果内容为nil(无),则返回空字符串("")。

在编程中,每个值都被视为“真实”或“虚假”。这意味着(除其他外)放在if语句中时,真实值将执行该语句,而伪造值将不执行。以整数值1为例;在大多数语言中,这是一个真实的值,所以

if 1
  puts 'hello world'
end

将在控制台上显示“ hello world”。 nil通常是虚假的值,因此

if nil
  puts 'hello world'
end

什么也不会做。

哪些值是真实的还是虚假的取决于编程语言。 在Liquid中,除了nilfalse 之外,一切都是真实的。 capture始终返回一个字符串,并且所有字符串(即使是空字符串)都是真实的。

如果您这样写:

{% if "" %}
<img class="center no-border" src="{{ banner }}" alt="{{ title }}"/><br/>
{% else %}
<img class="center" src="{{ banner }}" alt="{{ title }}"/><br/>
{% endif %}

您将始终获得无边界版本。将该if语句替换为if "true"if true,您将获得相同的结果。