Jekyll:按标题哈希按字母顺序对页面进行排序,仅当存在时才替换为另一个哈希

Jekyll: Sorting pages alphabetically by the title hash, replaced by another hash only if it exists

我的 YAML 总是有页面的标题哈希。

---
title: Why Green and Black Teas Should be Mixed.
---

YAML 有时对某些页面有 title-override 哈希值。

---
title: Why Green and Black Teas Should be Mixed.
title-override: Best reasons why Green and Black Teas Should be Mixed.
---

这个 title-override 哈希是为了让我可以更改存档中的措辞。

存档具有条件逻辑,如果没有 title-override 哈希,则仅使用标题哈希。它看起来像这样:

<table>
  <tbody>
    {% assign sorted_by_title = site.pages | sort:'title' %}
    {% for page in sorted_by_title %} 
      <tr>
        <td>
          <a href="{{ site.url }}{{ page.url }}">
            {% if page.title-override %}
              {{ page.title-override }}
            {% else page.title %}
              {{ page.title }}
            {% endif %}
          </a>
        </td>
      </tr>
    {% endfor %}
  </tbody>
</table>

问题:我按 标题 字母顺序排序。 “Why”出现在“Bad”和“Friendly”之后,所以 table 顺序会是这样的:

  1. 坏狗总能上天堂。
  2. 友好的马铃薯种植技巧。
  3. 应混合绿茶和红茶的最佳理由。
  4. YouTube 审查独角兽视频,原因是 Rainbow Blood(针对 Children)。

不幸的是,显示的内容不是按字母顺序排列的,因为我是按标题排序的,而不是显示的内容。

如果我按 title-override 排序,“应该混合绿茶和红茶的最佳理由。”不幸的是第一个出现,如果它是唯一具有 title-override 散列的。

如何按出现的内容排序,而不是仅按标题或 title-override?我试过使用 group_by 和 group_by_exp 对两者进行排序,但它没有用。

将您的行 pages 更改为 posts

{% assign sorted_by_title = site.pages | sort:'title' %}{% assign sorted_by_title = site.posts | sort:'title' %}

并创建相关的 _post 文件夹。

如果要排序,请检查标题中的小写和大写