Jekyll 杰基尔相当于雨果';s";加上;

Jekyll 杰基尔相当于雨果';s";加上;,jekyll,liquid,hugo,Jekyll,Liquid,Hugo,在Hugo中,可以将与一起使用,以避免重复变量名 {{ with .Site.Params.foo }} <p>{{ .bar }}</p> {{ end }} {{with.Site.Params.foo} {{.bar} {{end} 这几乎相当于 <p>{{ .Site.Params.foo.bar }}</p> {{.Site.Params.foo.bar} 它在杰基尔语中的等价物是什么 我的尝试: {%- assign tempv

在Hugo中,可以将
一起使用,以避免重复变量名

{{ with .Site.Params.foo }}
<p>{{ .bar }}</p>
{{ end }}
{{with.Site.Params.foo}
{{.bar}

{{end}
这几乎相当于

<p>{{ .Site.Params.foo.bar }}</p>
{{.Site.Params.foo.bar}

它在杰基尔语中的等价物是什么

我的尝试:

{%- assign tempvar = .Site.Params.foo -%}
<p>{{ tempvar.bar }}</p>
{%-assign tempvar=.Site.Params.foo-%}
{{tempvar.bar}

这应该可以:

{%- assign tempvar = site.foo -%}
<p>{{ tempvar.bar }}</p>
{%-assign tempvar=site.foo-%}
{{tempvar.bar}


根据您对问题的后续评论,您似乎正在寻找一种方法来检查变量是否只包含所需的键:值对。下面是一种检查变量是否只包含所需键的方法

            {% assign numOfKeys = page | size %}
            {% assign sizeOfGold = page.gold | size %}

            <!-- Print out the page object for debugging purposes -->
            {{ page | inspect }}

            {% if numOfKeys == 1 %}
                {% if sizeOfGold > 0 %}
                    {% for x in page.gold %}
                        <!-- Logic -->
                    {% endfor %}
                {% endif %}
            {% endif %}
{%assign numofkey=page | size%}
{%assign sizeOfGold=page.gold | size%}
{{page | inspect}}
{%如果numofkey==1%}
{%如果sizeOfGold>0%}
{page.gold%中x的%s}
{%endfor%}
{%endif%}
{%endif%}

Liquid的循环代码示例与您在Hugo中使用的
类似吗。我在雨果的
中看到了一些相似之处,它将
中的上下文(.)与
范围重新绑定,就像液体通过在
{%for product in collection.products%}
@Kin中显式定义
产品来绑定范围一样。谢谢你的观察。我终于找到了的相关文档,它相当于
if
语句和
assign
语句的缩写。关于
的范围绑定效果,您是对的。为了将其付诸实践,我面临这样的情况:如果一个
for
循环通过
collection.products
必须用于一个特定的对象,比如说
collection.products.gold
,我首先需要确保没有像
collection.products.shxt
这样的东西,所以循环只有一次迭代。谢谢你链接到Liquid docs,也许有更好的方法谢谢你抓住了我问题中的错误。