For loop Jekyll_数据:如何将键值标签显示为值,而不仅仅是键值

For 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

我的数据文件示例如下所示:

_数据/设备.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
   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>