Titleize Jekyll类别

时间:2013-10-29 03:15:38

标签: jekyll liquid

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

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

例如,对于帖子:

category: Here's the Category

当我引用名称时:

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

我在页面上看到“这是类别”。我想看看“这里是类别”,甚至是“这里的类别”,我可以替换(替换:'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 %}

如果有人知道更优雅的方法,我会留下未回答的问题。

7 个答案:

答案 0 :(得分:5)

您可以使用capitalize过滤器实现所需的一部分:

输入

{{ 'capitalize me' | capitalize }}

输出

Capitalize me

Source

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

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

它应该打印&#34;这里是类别&#34;,但是camelize可能会遇到here's的问题。

答案 1 :(得分:2)

在我的情况下使用{{ category.first | capitalize }}即可,但在类别上没有额外的''

答案 2 :(得分:0)

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

{% for category in site.categories %}
  {% assign words = category | first | split: ' ' %}
  {% for word in words %}
    {{ word | capitalize | replace: 'The','the' }}
  {% endfor %}
{% endfor %}

答案 3 :(得分: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

中查看其他过滤条件

答案 4 :(得分:0)

Kabab-case中的名称页面,如您所希望的那样,然后使用replace:

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

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

答案 5 :(得分:0)

此解决方案有点过分,但您可以调整author data file solution from the Jekyll site以使用类别。

_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时,我并不需要它。

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

答案 6 :(得分:0)

我反过来了。我在“标题”情况下对页面标题进行了硬编码,并在其他页面中使用了downcaseupcasecapitalize液体过滤器。