For loop Jekyll_数据:如何将键值标签显示为值,而不仅仅是键值
我的数据文件示例如下所示: _数据/设备.yamlFor loop Jekyll_数据:如何将键值标签显示为值,而不仅仅是键值,for-loop,jekyll,liquid,For Loop,Jekyll,Liquid,我的数据文件示例如下所示: _数据/设备.yaml - ip_address: 192.168.0.1 model: Netgear Whatever department: network location: Tempe, Arizona devicetype: Router - ip_address: 192.168.0.2 model: T2000 department: time travel location: 2035 devicet
- ip_address: 192.168.0.1
model: Netgear Whatever
department: network
location: Tempe, Arizona
devicetype: Router
- ip_address: 192.168.0.2
model: T2000
department: time travel
location: 2035
devicetype: weaponry
现在,我已经设法通过记录创建了一个循环,按部门对它们进行分组,并在一个名为\u includes/equipment\u list.html
的文件中显示它们各自的表,该文件由\u pages/equipment\u list\u network.md
调用
我遇到的难题是如何使第一个
在每个表的第一个
中将键标签显示为列标题
因此,该表将如下所示:
| IP Address | Model | Department | Location | Etc. |
…无需在单独的文件中手动键入每个TR/TD。我的目标是创建一个基于页面名称加载数据的页面,该页面将与{%assign%}
中的过滤器相对应:
{% assign departmentname = page.name | remove:"equipment_list_" | remove:".md" %} = results in "network" in this example.
然后
{% assign equipment = site.data.equipment | where:"department",{{departmentname}} | group_by:"devicetype" %}
然后我只运行一个for
循环来创建一个组标题,然后为该组中的每个项目运行一个for
循环
但是,从数据文件中的键标签插入列名超出了我的理解范围
任何洞察都将是极好的。我对编程和Jekyll非常陌生…您没有显示实际的示例代码,但我猜您正在做类似的事情,对吗
<table>
{% for e in site.data.equipment %}
<tr>
<td>{{e.ip_address}}</td>
<td>{{e.model}}</td>
<!-- etc. -->
</tr>
{% endfor %}
</table>
每个项都是这些键值对中的一个-,并且这些键值对也具有属性:
项[0]
是键,项[1]
是值。
因此,我们可以在数据文件上循环并创建一个仅包含以下值的表:
<table>
{% for e in site.data.equipment %}
<tr>
{% for item in e %}
<td>{{item[1]}}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{site.data.equipment%中的e为%1}
{e%中项目的%s}
{{项目[1]}
{%endfor%}
{%endfor%}
…并且仅在中,显示带有键的标题行:
<table>
{% for e in site.data.equipment %}
{% if forloop.first == true %}
<tr>
{% for item in e %}
<th>{{item[0]}}</th>
{% endfor %}
</tr>
{% endif %}
<tr>
{% for item in e %}
<td>{{item[1]}}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{site.data.equipment%中的e为%1}
{%if-forloop.first==true%}
{e%中项目的%s}
{{item[0]}
{%endfor%}
{%endif%}
{e%中项目的%s}
{{项目[1]}
{%endfor%}
{%endfor%}
最后一个代码示例将生成以下HTML:
<table>
<tr>
<th>ip_address</th>
<th>model</th>
<th>department</th>
<th>location</th>
<th>devicetype</th>
</tr>
<tr>
<td>192.168.0.1</td>
<td>Netgear Whatever</td>
<td>network</td>
<td>Tempe, Arizona</td>
<td>Router</td>
</tr>
<tr>
<td>192.168.0.2</td>
<td>T2000</td>
<td>time travel</td>
<td>2035</td>
<td>weaponry</td>
</tr>
</table>
ip地址
模型
部门
位置
设备类型
192.168.0.1
Netgear什么的
网络
亚利桑那州坦佩
路由器
192.168.0.2
T2000
时间旅行
2035
武器装备
我试图清理一下你的帖子,但我还是不太确定你在问什么。你能不能再加上一点代码,最好是以一种简单的形式?让我们来了解一下。尽管如此,我不确定在for循环中使用字母“e”的意义是什么。我对这个很陌生。这只是一个任意的选择,还是它是“e”的原因。示例代码如下:{%assign devices=site.data.network | group|u by:“devicetype”}{%for devicetype in devices%}{{{devicetype.name}}IP MAC地址等。。。{%for devicetype.items%}{{item.ip}中的项,依此类推。。。{%endfor%}{%endfor%}
这是一个任意选择。我循环site.data.device,在每个循环中,我需要将当前设备分配给一个变量,这样我就可以访问它的属性(另请参见中的第一个示例)。我选择e是因为我懒得键入更长的名称:-)您在示例中使用了“devicetypes”。我不知道如何将代码放入注释框中,使其看起来正确。好的,这非常有效,只是我有一个更复杂的安排。在第一个for
循环之前,我有:{%assign devices=site.data.equipment |其中:“部门”,部门名称|组员:“servicelocation”%}
因此,当我用设备
替换e
时,您的示例提供了3列。1.名称。2.项目。3.大小。当数据已分组,并且组键项目
包含我需要作为列标签的键=>值对时,我如何实现与您的示例相同的结果。谢谢!
<table>
<tr>
<th>ip_address</th>
<th>model</th>
<th>department</th>
<th>location</th>
<th>devicetype</th>
</tr>
<tr>
<td>192.168.0.1</td>
<td>Netgear Whatever</td>
<td>network</td>
<td>Tempe, Arizona</td>
<td>Router</td>
</tr>
<tr>
<td>192.168.0.2</td>
<td>T2000</td>
<td>time travel</td>
<td>2035</td>
<td>weaponry</td>
</tr>
</table>