是否可以将参数传递给 Jekyll 中的集合成员
Is it possible to pass parameters to collection members in Jekyll
我有一个名为操作码的集合,并创建了一个循环来生成所有成员的列表。缩写形式:
{% assign ops = site.opcodes | where: 'pst', 1 %}
{% for opcode in ops %}
<div id="op{{ opcode.n }}" class="opcode">
<span class="op-data">#{{ opcode.n }} ({{ opcode.n | dec_to_hex }})</span>
{{ opcode.content }}
{% endfor %}
个别成员是 html 文件,前面有一些内容。我将生成多个列表,成员有时需要稍作更改。看起来在循环运行时,它们的内容已经生成了。我试着影响他们的 front matter 或 site 变量,但这一切都太晚了,none of liquid if 语句起作用了。变量为空或为原始值。
有没有办法使这项工作起作用,在呈现内容之前以某种方式将参数传递给成员?
显而易见的解决方法是复制有问题的文件并对其进行编辑,因为我已经对它们使用 "where" 子句 select。问题是关于任何更好的方法。
编辑:这是各个文件的样子:
---
title: bla
pst = 0
---
bla bla
{% if x == "big" %}
blu blu
{% else %}
ble ble
{% endif %}
x
是我想从第一个循环开始的外部设置。
您可以使用 front matter default configuration 根据包含的文件夹设置变量。
─ _myCol
├── cat1
│ ├── item0.md
│ └── item1.md
└── cat2
├── item2.md
└── item3.md
如果您想为 myCol
集合中的所有项目设置变量 myVar
,您可以:
# _config.yml
defaults:
- scope:
type: myCol
values:
myVar: "YOLO"
现在,如果您想根据包含的文件夹为 myVar
设置不同的值,请添加:
- scope:
path: _myCol/cat1
values:
myVar: "TOTO"
然后您可以在集合的项目布局中使用此变量,如下所示:
{% if page.myVar == "YOLO" %}
blu blu
{% else %}
ble ble
{% endif %}
我又看了一遍,没有找到解决方案,所以答案似乎是:不,不可能在渲染之前将参数传递给集合成员。
我有一个名为操作码的集合,并创建了一个循环来生成所有成员的列表。缩写形式:
{% assign ops = site.opcodes | where: 'pst', 1 %}
{% for opcode in ops %}
<div id="op{{ opcode.n }}" class="opcode">
<span class="op-data">#{{ opcode.n }} ({{ opcode.n | dec_to_hex }})</span>
{{ opcode.content }}
{% endfor %}
个别成员是 html 文件,前面有一些内容。我将生成多个列表,成员有时需要稍作更改。看起来在循环运行时,它们的内容已经生成了。我试着影响他们的 front matter 或 site 变量,但这一切都太晚了,none of liquid if 语句起作用了。变量为空或为原始值。
有没有办法使这项工作起作用,在呈现内容之前以某种方式将参数传递给成员?
显而易见的解决方法是复制有问题的文件并对其进行编辑,因为我已经对它们使用 "where" 子句 select。问题是关于任何更好的方法。
编辑:这是各个文件的样子:
---
title: bla
pst = 0
---
bla bla
{% if x == "big" %}
blu blu
{% else %}
ble ble
{% endif %}
x
是我想从第一个循环开始的外部设置。
您可以使用 front matter default configuration 根据包含的文件夹设置变量。
─ _myCol
├── cat1
│ ├── item0.md
│ └── item1.md
└── cat2
├── item2.md
└── item3.md
如果您想为 myCol
集合中的所有项目设置变量 myVar
,您可以:
# _config.yml
defaults:
- scope:
type: myCol
values:
myVar: "YOLO"
现在,如果您想根据包含的文件夹为 myVar
设置不同的值,请添加:
- scope:
path: _myCol/cat1
values:
myVar: "TOTO"
然后您可以在集合的项目布局中使用此变量,如下所示:
{% if page.myVar == "YOLO" %}
blu blu
{% else %}
ble ble
{% endif %}
我又看了一遍,没有找到解决方案,所以答案似乎是:不,不可能在渲染之前将参数传递给集合成员。