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

问题描述 投票:0回答:1

我的 YAML 始终有页面的标题哈希。

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

YAML 有时对某些页面有标题覆盖哈希。

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

这个标题覆盖哈希可以让我更改存档中的措辞。

存档具有条件逻辑,仅在没有标题覆盖哈希的情况下才使用标题哈希。看起来像这样:

<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>

问题:我按 title 按字母顺序排序。 “为什么”出现在“不好”和“友好”之后,所以桌子顺序会是这样的:

  1. 坏狗总是去狗狗天堂?
  2. 友好的马铃薯种植技巧。
  3. 绿茶和红茶应该混合的最佳理由。
  4. YouTube 因为彩虹之血而审查独角兽视频。

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

如果我按标题优先排序,“绿茶和红茶应该混合的最佳理由”。不幸的是,如果它是唯一具有标题覆盖哈希的,则它首先出现。

如何按出现的内容排序,而不是仅按标题或标题覆盖排序?我尝试过使用 group_by 和 group_by_exp 来按两者排序,但它不起作用。

html conditional-statements jekyll liquid alphabetical
1个回答
2
投票

将线路

pages
更改为
posts

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

并创建相关的

_post
文件夹。

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

© www.soinside.com 2019 - 2024. All rights reserved.