如何使用Jekyll/Liquid对嵌套数据进行排序

如何使用Jekyll/Liquid对嵌套数据进行排序,jekyll,liquid,Jekyll,Liquid,是否可以对嵌套数据进行排序 我尝试使用assign,但出现错误: 无法对空对象进行排序 我的流动密码 {site.data.programmfk%中fuehrung2的%s} {%assign fuehrung1=fuehrung2['fuehrungen']|排序:“开始”%} {fuehrung1%中fuehrung的%s} {{fuehrung.titel}{{fuehrung.start}日期:%H:%M}{%if fuehrung.ende!=nil%}{{fuehrung.ende

是否可以对嵌套数据进行排序

我尝试使用assign,但出现错误:

无法对空对象进行排序

我的流动密码


{site.data.programmfk%中fuehrung2的%s}
{%assign fuehrung1=fuehrung2['fuehrungen']|排序:“开始”%}
{fuehrung1%中fuehrung的%s}
  • {{fuehrung.titel}
    {{fuehrung.start}日期:%H:%M}{%if fuehrung.ende!=nil%}{{fuehrung.ende}日期:%H:%M}{%endif%}Uhr⟩;Treffpunkt:{{fuehrung.Treffpunkt|join:&}
  • {%endfor%} {%endfor%}
    我的程序mfk.yml(只是…的一小部分)

    -numer:“04”
    滴度:电子技术和信息技术
    资讯站:Lothstraße 64
    格斯普拉赫:
    开始时间:2020-03-28 10:00
    恩德:2020-03-28 15:00
    朋克特:
    -Vertiefungsrichtong通信技术公司
    -劳动示范会
    -机械人
    -智能汽车
    -电脑踢球者
    陈述:
    开始:
    恩德:
    朋克特:
    vortraege:
    -滴度:Vorstellung der Studiengänge
    开始时间:2020-03-28 11:00
    恩德:2020-03-28 12:00
    劳姆:E 0.103
    富伦根:
    -滴度:Nachrictensatellitentechnik
    特里夫蓬特:法库特信息站
    开始时间:2020-03-28 12:00
    恩德:2020-03-28 12:30
    -标题:Regelungstechnik
    特里夫蓬特:法库特信息站
    开始时间:2020-03-28 12:30
    恩德:2020-03-28 13:00
    -滴度:Aufbau-und Verbindungstechnik
    特里夫蓬特:法库特信息站
    开始时间:2020-03-28 13:00
    恩德:2020-03-28 13:30
    -标题:Regelungstechnik
    特里夫蓬特:法库特信息站
    开始时间:2020-03-2813:30
    恩德:2020-03-28 14:00
    
    我正在尝试按开始时间对fuehrungen进行排序


    @大卫·雅克

    如果我将yml文件在线用于
    fuehrungen
    ,它就会工作

    My
    fuehrungen.yml

    fuehrungen:
    -蒂特尔:摩托兰伯勒
    特里夫蓬特:法库特信息站
    开始时间:2020-03-28 11:00
    完:2020-03-28 11:45
    -蒂特尔:摩托兰伯勒
    特里夫蓬特:法库特信息站
    开始时间:2020-03-28 12:00
    恩德:2020-03-28 12:45
    -滴度:Nachrictensatellitentechnik
    特里夫蓬特:法库特信息站
    开始时间:2020-03-28 12:00
    恩德:2020-03-28 12:30
    -标题:Regelungstechnik
    特里夫蓬特:法库特信息站
    开始时间:2020-03-28 12:30
    恩德:2020-03-28 13:00
    -滴度:Aufbau-und Verbindungstechnik
    特里夫蓬特:法库特信息站
    开始时间:2020-03-28 13:00
    恩德:2020-03-28 13:30
    -标题:Regelungstechnik
    特里夫蓬特:法库特信息站
    开始时间:2020-03-2813:30
    恩德:2020-03-28 14:00
    -滴度:环境和实验实验室技术研究和通信
    特里夫蓬特:法库特信息站
    开始时间:2020-03-2811:45
    恩德:2020-03-28 12:30
    -滴度:Führung Bereich Papier和Verpackung(Labore、Maschinenhalle等)
    特里夫蓬特:法库特信息站
    开始时间:2020-03-2812:15
    恩德:2020-03-28 13:00
    -标题:“劳动:研究德鲁克和医学技术”生产
    特里夫蓬特:法库特信息站
    开始时间:2020-03-2813:50
    恩德:2020-03-2814:15
    
    液体/HTML

    {%assign-fuehrungSort=site.data.fuehrungen['fuehrungen']|排序:“start”%}
    {fuehrungSort%中fuehrung的%s}
    
  • {{fuehrung.start}日期:“%H:%M”}Uhr{{fuehrung.titel}
  • {%endfor%}
    但是,在我原来的
    程序mfk.yml
    中,我之前还有一个级别,我无法获得该级别的结果

    -努默:
    …
    富伦根:
    -标题:
    …
    
    如您的代码中所示,您的代码中隐藏着一个空的vortraege

    - nummer: "13"
      titel: Studium Generale und Interdisziplinäre Studien
      infostand: Lothstraße 64
      gespraech:
        start: 2020-03-28 10:00
        ende: 2020-03-28 15:00
        punkte:
      praesentation:
        start:
        ende:
        punkte:
      vortraege:
      fuehrungen:
    
    在代码中,
    vortraege['vortraege']
    可以为null或空,并且不包含包含要排序的
    start
    字段的对象。这解释了错误

    您可以在排序
    {%if vortraege['vortraege].size%}

    这就产生了:

    <ol>
    {% for vortraege in site.data.programmfk %}
      {% if vortraege['vortraege'].size %}
        {% assign vortraegeSort = vortraege['vortraege'] | sort: 'start' %}
        {% for vortrag in vortraegeSort %}
          <li><b>{{ vortrag.start | date: "%H:%M" }}&nbsp;Uhr</b> {{ vortrag.titel }}</li>
        {% endfor %}
      {% endif %}
    {% endfor %}
    </ol>
    

    无法复制此错误。如何对具有相同时间戳的事件进行排序测试?感谢您的申请。我在原始问题中添加了更多信息。您是否有代码复制此错误的存储库?Gemfile内容?是的,David。这是:谢谢您的帮助。无需复制。此代码是否会在您的计算机上引发错误?T谢谢你的解决方案。有时候很简单。我不希望能在周一之前测试它。谢谢你,大卫。但是,我仍然希望更高一级,所以排序不是通过
    programmfk.numer
    。我想通过
    programmfk['vortragege']
    列出并排序(
    'start'
    ).你能再帮我一次吗?把我的答案编辑成一次排序所有的
    vortraege
    。非常感谢大卫。你是我的杰基尔王;-)
    {% comment %} --- Create an empty array --- {% endcomment %}
    {% assign vortraege_all = '' | split: '' %}
    
    {% for vortraege in site.data.programmfk %}
    
      {% comment %} --- Only if vortraege['vortraege'] contains something
      -- {% endcomment %}
      {% if vortraege['vortraege'].size %}
    
        {% comment %} --- Concatenate vortraege_all and current non-empty vortraege['vortraege'] --- {% endcomment %}
        {% assign vortraege_all = vortraege_all | concat: vortraege['vortraege'] %}
    
      {% endif %}
    {% endfor %}
    
    {% comment %} ----------- Sorting -------------- {% endcomment %}
    {% assign vortraege_all = vortraege_all | sort: 'start' %}
    
    <ol>
    {% for v in vortraege_all %}
      <li><b>{{ v.start | date: "%H:%M" }}&nbsp;Uhr</b> {{ v.titel }}</li>
    {% endfor %}
    </ol>