6

我想将我帖子的打印类别名称转换为标题大小写。我找不到合适的液体过滤器。我尝试使用破折号和驼峰过滤器,但没有骰子。

或者,我想打印在 YAML frontmatter 中编写的类别名称。

例如,对于具有以下内容的帖子:

category: Here's the Category

当我引用名称时:

{% for cat in site.categories %}
    <h1>{{ cat[0] }}</h1>
{% endfor %}

我在页面上看到“这里是类别”。我想看到“Here's the Category”甚至“Here's The Category”,我可以替换(替换:'The'、'the')我想要小写的几篇文章。

编辑

对于像我这样绝望的人来说,这个令人作呕的技巧很有效,其中 n 是您在类别标题中拥有的最大单词数。

{% for cat in site.categories %}
    {% assign words = cat[0] | split: ' ' %}
    <h1>{{ words[0] | capitalize | replace:'The','the'}} {{ words[1] | capitalize }} {{ words[2] }} {{ words[3] | capitalize }} {{ words[4] | capitalize }} {{ words[n] | capitalize }}</h1>
{% endfor %}

如果有人知道更优雅的方法,我将不回答这个问题。

4

7 回答 7

6

capitalize您可以通过使用过滤器来实现您想要的一部分:

输入

{{ 'capitalize me' | capitalize }}

输出

Capitalize me

来源

我没有测试其边缘情况的另一种可能性是使用joinand camelize

{{ "here's the category" | join: '-' | camelize }}

它应该打印“Here's The Category”,但 camelize 可能有here's.

于 2013-10-29T20:39:33.670 回答
2

对于我的情况,只需使用{{ category.first | capitalize }}即可,无需额外''的类别。

于 2016-01-03T10:36:56.277 回答
0

可以使用另一个 for 循环,而不是手动单步执行单词 0 到 n,如下所示:

{% for category in site.categories %}
  {% assign words = category | first | split: ' ' %}
  {% for word in words %}
    {{ word | capitalize | replace: 'The','the' }}
  {% endfor %}
{% endfor %}
于 2014-08-23T15:14:57.700 回答
0

我知道这是旧的,但它帮助我解决了我的问题,它可以帮助其他人。

我来的解决方案是:

{% for category in site.categories %}
  <a href="/{{category[0] | slugify }}/">
    {{category[0]}}
  </a>
{% endfor %}  

这列出了所有博客类别(最常用于构建菜单)

它变成:

<a href="/dicas/">
  Dicas
</a>

<a href="/diário-de-bordo/">
  Diário de bordo
</a>

谢谢你给我一个线索。您可以在以下位置查看其他过滤器:http: //jekyllrb.com/docs/templates/#filters

于 2016-09-25T23:44:01.600 回答
0

在 Kabab-case 中按您希望它们出现的方式命名页面,然后使用替换:

{{ category.name | replace: '-', ' '}}

Don't-Capitalize-the成为Don't Capitalize theCapitalize-The成为Capitalize The

于 2017-09-04T03:20:31.917 回答
0

我反其道而行之。我在 Title case 和 use 中硬编码了我的页面标题downcaseupcasecapitalize在其他页面中使用了液体过滤器。

于 2019-03-05T19:29:45.893 回答
0

这个解决方案有点过度,但您可以调整Jekyll 站点中的作者数据文件解决方案以使用类别。

在您的_data文件夹中,创建一个名为categories.yml. 输入这样的内容:

my-first-category:
  name: My First Category

another-category:
  name: Another Category

然后,您可以像这样遍历您的类别:

{% for category in site.categories %}
    {% assign category_slug = category[0] %}
    {% assign category_data = site.data.categories[category_slug] %}
    {% if category_data %}
        {{ category_data.name }}
    {% endif %}
{% endfor %}

旁注:我不确定为什么需要category_slug分配。循环时我不需要它post.categories

这通过添加额外的文件增加了开销,但为其他可以附加到对象(如类别图像或描述)的数据打开了大门。你可以更细化你的名字。这也是一个非常易读的解决方案,这很好。

于 2017-11-06T13:38:14.997 回答