获取集合元素的属性而不是输出

huangapple go评论57阅读模式
英文:

Jekyll get Attributes of Collection Element instead of Output

问题

我有一组元素,它们的输出为 true。现在我想创建一个数组,其中只包含这些集合元素的属性,而不包括输出。然而,如果我使用 {{ assign arr = arr | push: site.col['elem'] }},它不起作用,因为这会给我输出。

另外,我尝试了 {{ assign arr = arr | push: [site.col['elem'].attr1, site.col['elem'].attr2] }},但这给我了以下 Liquid 错误:

Liquid 异常:Liquid 错误(第86行):参数数量不正确(给定3个,期望2个)在(路径)

有没有办法实现我需要的效果?

英文:

I have a collection of elements that have output on true. Now I'd like to make an array of some of those Collection elements, but only its attributes and not the output. However, if I use {{ assign arr = arr | push: site.col['elem'] }} it doesn't work, as this gives me the output.

Alternatively, I tried {{ assign arr = arr | push: [site.col['elem'].attr1, site.col['elem'].attr1] }} but this gave me the following Liquid Error:

> Liquid Exception: Liquid error (line 86): wrong number of arguments (given 3, expected 2) in (PATH)

Is there any way to achieve what I need?

答案1

得分: 0

Push仅接受2个参数。您可以使用for循环并将所需的属性添加到哈希表中。

代码检查集合的输出属性是否为true,并将所需的属性提取到名为elem_attributes的新对象中,然后将其推送到结果数组中:

{% assign arr = [] %}
{% for elem in site.col %}
    {% if elem.output == true %}
    {% assign elem_attributes = { 'attr1': elem.attr1 } %}
    {% assign arr = arr | push: elem_attributes %}
  {% endif %}
{% endfor %}

我希望我理解得正确。

英文:

Push only accepts 2 arguments. You can use a for loop and add desired attributes to a hash.

The code checks if the output attribute of a collection is true and extracts the desired attributes into a new object called elem_attributes before pushing it to the result array:

{% assign arr = [] %}
{% for elem in site.col %}
    {% if elem.output == true %}
    {% assign elem_attributes = { 'attr1': elem.attr1 } %}
    {% assign arr = arr | push: elem_attributes %}
  {% endif %}
{% endfor %}

I hope I got you right.

huangapple
  • 本文由 发表于 2023年3月21日 02:06:00
  • 转载请务必保留本文链接:https://go.coder-hub.com/75793833.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定